python3实现knn算法实现分类
knn算法就是算空间两点的距离,来分类代码如下
import numpy as npy import sys def knn(k,testdata,traindata,labels): dif = testdata - traindata sqdif = dif**2 sumsqdif = sqdif.sum(axis=1) distance = sumsqdif**0.5 #获取从小到大的数据的下标 sortdistance = distance.argsort() count = {} for i in range(0,k): vote = labels[sortdistance[i]] count[vote] = count.get(vote,0) + 1 sortcount = sorted(count.items(),key=lambda s: s[1],reverse=True) return sortcount[0][0] if __name__ == '__main__': #训练数据 samples = npy.array([[0, 0, 0], [0, 0.5, 0], [1, 1,0.5],[0, 0.5, 8.5], [0, 0.5, 8], [0, 0.5,9]]) #训练数据对应的分类 samplesTabel = npy.array(['one','one','one','one1','one1','one1']) #测试数据 test = npy.array([0, 0.5, 2]) #取多少个来比较(不能大于训练数据数量) frequency = 5 label = knn(frequency,test,samples,samplesTabel) print(label)