php是最好的语言

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)


作者:xTao 分类:LNMP 浏览:2391 评论:0