kNN算法 K近邻 简单说就是找出最近的K个点然后找出他们的分类最多的就是本身
from numpy import * #导入包numpyimport 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;def classify(inX,dataSet,labels,k): #kNN 输入向量 数据集 数据集对应的类型 K个 dataSetSize=dataSet.shape[0]; #算出来有几个点 diffMat=tile(inX,(dataSetSize,1))-dataSet; #用输入的点填满 然后去减掉数据集对应的位子 sqDiffMat=diffMat**2; #平方 sqDistances=sqDiffMat.sum(axis=1); #把每一行加起来 distances=sqDistances**0.5; #对每一个结果开根号 sortedDisIndicies=distances.argsort(); #排序 返回他们的下标 classCount={}; #map存类型和数目 for i in range(k): voteIlabel=labels[sortedDisIndicies[i]]; classCount[voteIlabel]=classCount.get(voteIlabel,0)+1; #数目增加 sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) #对数目排序 降序 return sortedClassCount[0][0]; #返回值