代码如下(示例):
#!/usr/bin/env python # -*- coding: utf-8 -*- #练习 #第一步,编写分类模块 #算法逻辑: #1、计算目标分类点到所有点的距离 #2、排序之后计算出所有前K个点的分类及数量 #3、对2的结果进行排序 #4、排名第一个类别就是目标数据的类别 #程序实现:采用矩阵进行数据处理 #1、将目标分类数据转成测试数据一样大小的矩阵 #2、通过矩阵计算距离 #3、对数据排序 #4、排序后取前K个,并对前K个的类别进行计数 #5、第一个类别就是目标类的类别 from numpy import * import operator def classify1(inx,datatest,labels,k): x=datatest.shape[0] y=datatest.shape[1] inx1=(tile(inx,(x,1))-datatest)**2 inx2=inx1.sum(axis=1) inx3=inx2**0.5 inx4=inx3.argsort() labell={} for i in range(k): v=labels[inx4[i]] labell[v]=labell.get(v,0)+1 leibie=sorted(labell.items(),key=operator.itemgetter(1),reverse=True) return leibie[0][0] a=[1,2,3] b=array([[1,2,3],[2,3,4],[9,8,9],[9,9,9]]) label=['A','A','B','B'] k=3 print(classify1(a,b,label,k))
总结
输出的结果为A