KNN 类的问题

来源:4-2 scikit-learn中的机器学习算法封装

慕移动3485595

2020-07-04

图片描述
这里 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]?

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

写回答

1回答

liuyubobobo

2020-07-04

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
2
liuyubobobo
回复
慕移动3485595
1你需要复习一下 Python 语法,你写的方式是在构造函数中传参数,不是定义类的成员变量。 2 _predict 不是自带的;和 predict 没关系。predict 和 _predict 是两个方法,其中 predict 是供用户调用的方法,_predict 是类的私有方法。
2020-07-04
共2条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程