老师所以k=6的意义是什么呢

来源:4-1 k近邻算法基础

SomnusL

2020-01-16

之前都听得懂,k=6之后后面的操作没太明白都是在干啥。。。而且为什么k要=6

写回答

2回答

liuyubobobo

2020-01-17

你理解的 knn 的过程是正确的。


k = 6 只是我们暂时取的一个值,k 被称为是超参数。对于这一点,课程后续会介绍的。


x_train 是一个向量,代表一个样本。注意下面的程序中:

//img.mukewang.com/szimg/5e20a5a8098c105304180142.jpg


x_train 是从 X_train 中取出来的。X_train 是一个二维数组,x_train 是这个二维数组中的一行。大写的 X 代表二维矩阵,小写的 x 代表向量。印象里课程中讲过,在这整个课程中,变量名称都遵循这个原则。这样通过变量名,就能看出来,当前变量代表的到底是向量还是矩阵。


实际在程序中打印出来 x_train,看一看这个 x_train 到底是什么?


x 当然被定义过。不仅定义了,我们还将它可视化了。下面蓝色的点就是 x。

//img.mukewang.com/szimg/5e20a66b091047e306760434.jpg


你最后的问题,我没有可能明白你想怎么写。把你想写的逻辑实际写出来,实际运行一下,看看得到的结果是什么意思?和你想的是否一样?如果不一样,问题出在哪里?再仔细体会一下,课程中的逻辑,求得是什么?


答案:课程中的逻辑,求得是离 x 最近的六个点,对应的 y 值是多少,分别是 1 1 1 1 1 0,因为有 5 个 1,1 个 0,1 的数量多,所以我们预测 x 属于 1 这个类别。

//img1.sycdn.imooc.com/szimg/5e20a72f095a9c3905830512.jpg


根据上面的回答,再重新看一遍这一小节?要理解我们写的每一行代码到底在干什么,求得是什么。


继续加油!:)

1
3
SomnusL
回复
liuyubobobo
呜 我的错
2020-01-17
共3条回复

SomnusL

提问者

2020-01-17

啊 我搞懂了。过程就是先把两个数据集存入array 然后绘制当y是0和1的前两列在x和y上的散点分布图。给出要预测的那一个数据,把数据加到表格上,用欧拉公式算出预测点和所有点之间的距离,然后用排序找出索引,然后找出k个理他最近的数据nearest中前k个元素在Y-train 中对应的是1还是0然后再用counter统计出现次数最多的元素是0还是1. 试着思路吗?
但是还有点没明白为什么在算距离的时候直接就(x_train-x)可以这样写?x_train不是代表所有的点的坐标吗?之前也没定义过它代表什么啊?为啥可以这样写呢,而且x之前也没有被定义过啊。
还有就是找出离预测点最近的点的y坐标不应该是for nearest in Y_train吗?为啥是Y train in nearest。。。

0
0

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

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

5839 学习 · 2437 问题

查看课程