请稍等 ...
×

采纳答案成功!

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

def predict(self, X_predict)

1.def predict(self, X_predict) 和 def _predict(self, x) 这两个函数有什么区别?
2.def predict(self, X_predict) 这个函数的意义是什么?
3.同时对.def predict(self, X_predict) 函数中这句代码 topK_y = [self._y_train[i] for i in nearest[:self.k]]有点不懂,希望老师可以讲一下

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

1回答

liuyubobobo 2023-02-22 00:21:37

1

在这个课程中,所有的大写字母都表示矩阵,所有的小写字母表示向量。

所以,def _predict(self, x)  的 x 是小写,传入的是一个向量,即一个样本;

def predict(self, X_predict) 的 X 是大写,传入的是一个矩阵,一个 m * n 的矩阵,表示有 m 个样本;


所以,def predict(self, X_predict) 的代码中(33 行):https://git.imooc.com/coding-169/coding-169/src/master/04-kNN/02-kNN-in-scikit-learn/kNN/kNN.py 是取出 X_predict 中的每一行(每一个 x),运行 self._predict (x)


2

def predict(self, X_predict) 表示预测 X_predict 这个矩阵中的每一个样本对应的结果;


3

nearest 按照距离 x 的距离大小顺序,存储了所有样本的索引;

比如如果 nearest = [1, 3, 5, 4, 0, 2],就表示样本中,距离 x 最近的是样本1;其次近的是样本 3;其次近的是样本 5;其次近的是样本 4;其次近的是样本 0;其次近的是样本 2;


nearest[:self.k] 取出最近的 k 个样本的索引,比如对于上面的 nearest, nearest[:3] = [1, 3, 5]


[self._y_train[i] for i in nearest[:self.k]] 取出这最近的 k 个索引的样本所对应的 y


所以 topK 中存储的是距离 x 最近的 k 个样本对应的 y。


继续加油!:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信