请稍等 ...
×

采纳答案成功!

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

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

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

正在回答

2回答

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


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


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

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


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


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


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

//img1.sycdn.imooc.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 回复 有任何疑惑可以回复我~
  • 提问者 SomnusL #1
    啊我晕了我忘了这个点就叫x。。。但还是有点不明白老师说x_train就是二维数组的一行是啥意思,x_train-x代入在欧拉公式里不是x_train代表二维数组里所有的点的坐标这个意思吗
    回复 有任何疑惑可以回复我~ 2020-01-17 02:33:41
  • liuyubobobo 回复 提问者 SomnusL #2
    for x_train in X_train... 再复习一下这个语法是什么意思?在这个循环外面看一看 X_train 是什么样子?在这个循环里面看一看 x_train 是什么样子?
    回复 有任何疑惑可以回复我~ 2020-01-17 02:35:31
  • 提问者 SomnusL 回复 liuyubobobo #3
    呜 我的错
    回复 有任何疑惑可以回复我~ 2020-01-17 03:13:51
提问者 SomnusL 2020-01-17 00:57:04

啊 我搞懂了。过程就是先把两个数据集存入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 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信