请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

KNN 类的问题

图片描述
这里 def__init__(self ,k)中 为什么可以不定义 _X_train和_y_train?

图片描述

这里 return self的self 具体指什么? 这里不太懂。

图片描述
is not None 这个判别式比较少见,老师能不能讲讲?
y_predict = [self. _predict(x) for x in X_predict] 中self. _predict(x)不太理解? 不知道啥意思?另外,predict是一个有固定意义的函数吗?

图片描述
x.shape[0] == self._x_train.shape[1], 这里是不是x.shape[1]?

希望得到老师的解答,谢谢

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2020-07-04 13:18:19

1

我没有理解你说的定义 _X_train和_y_train,是指你想如何定义?

在 init 中做 self._X_train = X_train self._y_train = y_train 就是在定义 _X_train和_y_train


2

self 相当于 C++ 或者 Java 语言中的 this,就是自身。


3

a is not None 就是在判断 a 不是 None。可以再参考复习一下 Python 语言中 is 关键字的用法 和 not 关键字的用法


4

self. _predict(x) 就是调用自身的 _predict 方法。


5

"predict是一个有固定意义的函数吗" 这个问题我没有理解?


6

x.shape[0] == self._X_train.shape[1] 这里注意,传来的小 x 是一个向量,这个向量表示一个样本,有 n 个元素; self._X_train.shape 是一个矩阵,包含 m 和样本,每个样本有 n 个特征。所以是 x.shape[0] == self._X_train.shape[1]


在程序里,具体用单步跟踪或者打印输出的方式看一看,x.shape[0] == self._X_train.shape[1] 这个调用中,x 和 _X_train 都是谁?他们的维度是怎样的?


继续加油!:)


0 回复 有任何疑惑可以回复我~
  • 提问者 慕移动3485595 #1
    谢谢老师的回答
    1.我说def__init__(self ,k)中 为什么可以不定义 _X_train和_y_train,指的是写成这样def__init__(self ,k,_X_train,_y_train)
    
    2.self. _predict(x) 这个函数是自带的吗?这里的predict和下面的def _predict() 是什么关系?
    回复 有任何疑惑可以回复我~ 2020-07-04 17:29:14
  • liuyubobobo 回复 提问者 慕移动3485595 #2
    1你需要复习一下 Python 语法,你写的方式是在构造函数中传参数,不是定义类的成员变量。 2 _predict 不是自带的;和 predict 没关系。predict 和 _predict 是两个方法,其中 predict 是供用户调用的方法,_predict 是类的私有方法。
    回复 有任何疑惑可以回复我~ 2020-07-04 17:33:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信