python实现:
#coding:utf-8
'''
KNN算法
'''
fromnumpyimport*
importoperator
defclassify0(inX,dataSet,labels,k):
'''
:paraminX:输入变量
:paramdataSet:训练样本
:paramlabels: 标签向量
:paramk:最近邻的数目
:return: 输入变量的类别
'''
dataSetSize=dataSet.shape[0] #样本行数
diffMat=tile(inX,(dataSetSize,1))-dataSet
sqlDiffMat=diffMat**2
sqlDistances=sqlDiffMat.sum(axis=1) #矩阵按行求和
distances=sqlDiffMat**0.5 #距离
sortedDistIndicies=distances.argsort() #从小到大排序,返回索引
classCount={}
for i in range(k):
voteIlabel=labels[sortedDistIndicies[i]]
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
returnsortedClassCount[0][0]