您的位置:首页 > 编程语言 > Python开发

KNN 的简易实现 笔记

2014-11-07 17:54 155 查看
书上有一部分的变量名字很长 然后偷换了一下 就变成了比较容易懂的了

主要是那个小驼峰命名实在是有点蛋疼了 我还是喜欢下划线 

from numpy import *
import operator

def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group,labels

group,labels=createDataSet();
#print group
#print labels
def classify0(inX,dataSet,labels,k):

row_size=dataSet.shape[0]
diffMat = tile(inX,(row_size,1)) - dataSet

sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
dis = sqDistances**0.5
#    print dis
rk = dis.argsort()
#    print rk
sum={}

for i in range(k):
j = labels[rk[i]]
sum[j]=sum.get(j,0)+1
_sort=sorted(sum.iteritems(),key=operator.itemgetter(1),reverse=True)

return _sort[0][0]

print classify0([999,999],group,labels,3)

1、确定已知的类别数据集中的点到当前点之间的距离

2、按照距离递增次序排序

3、选取与当前点距离最小的k个点

4、确定前k个点所在的类别的出现频率

5、返回前k个点出现频率最高的类别作为当前点的预测分类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  numpy