机器学习实战 KNN classfy0疑问

来源:互联网 发布:研究院所 软件 百分点 编辑:程序博客网 时间:2024/05/12 18:34

在classfiy0中代码为:从网上copy下来的代码

  1. #将欧氏距离排序,argsort返回数组值从小到大的索引值  
  2.     sortedDistIndicies=distances.argsort()  
  3.     #得到前k个中出现次数最多的类别标签  
  4.     classCount={}  
  5.     for i in range(k):  
  6.         voteLabel=labels[sortedDistIndicies[i]]  
  7.         #给不同的voteLabel计数  
  8.         classCount[voteLabel]=classCount.get(voteLabel,0)+1  
第二句先得到索引,下面就是使用该索引进行classCount判断

但是:

如果k为3 

书中代码计算出的结果

sortedDisInicies:2,1,3,0

classcount:B:2 A:1


但是如果对数据进行一下修改:

sortedDisInicies:1,3,2,0

k仍为3:

则classCount为:B:2 A:1

但是k做成1:

则classCount为:A:1

按照以上的计算方法,不符合knn的定义,找到最近的k个元素。

不知道是否是我的理解出错了,如有网友可以解答,请不吝赐教

  


原创粉丝点击