一、 实现步骤
1.处理数据
2.数据向量化
3.计算欧几里得数据
4.根据距离进行分类
# shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。
'''
二、代码示例
import numpy as np
import operator
def knn(k, testdata, traindata, labels):
traindatasize = traindata.shape[0] # 获取列数
# tile(a,n):对已存在的数组在行上进行拓展n次;
# tile(a,(n,1)):对已存在的数组在列上进行拓展n次
dif = tile(testdata, (traindatasize, 1) - traindata
sqdif = dif**2
sumsqdif = sqdif.sum(axis=1) # 将每一行的数字求和
distance = sumsqdif**0.5 # 开方
sortdistance = distance.argsort() # 对距离进行排序
count = {} # 建立一个空字典存储vote
for i in range(0,k):
vote = labels[sortdistance[i]] # 聚类结果
count[vote]=count.get(vote,0)+1 # 统计出现次数
#sorted()依据第二个参数排序,得到第一个参数的值;
#operator.itemgetter(1)指定依据第二个参数排
# (若是0则指定依据第1个参数排)
#reverse=True(降序排列)
sortcount = sorted(count.items(),key=operator.itemgetter(1),reverse=True)
return [0][0]