机器学习实战 k-近邻

 kNN.py 
1
from numpy import *#引入科学计算包 2 import operator #经典python函数库。运算符模块。 3 4 #创建数据集 5 def createDataSet(): 6 group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) 7 labels=['A','A','B','B'] 8 return group,labels 9 10 #算法核心 11 #inX:用于分类的输入向量。即将对其进行分类。 12 #dataSet:训练样本集 13 #labels:标签向量 14 def classfy0(inX,dataSet,labels,k): 15 #距离计算 16 dataSetSize =dataSet.shape[0]#得到数组的行数。即训练样本个数 17 diffMat =tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函数,行数扩充4倍,列扩充1倍。diffMat得到了目标与训练数值之间的差值。
     tile([0,0],[4,1])-dataSet
    
18     sqDiffMat   =diffMat**2#各个元素分别平方
    
19     sqDistances =sqDiffMat.sum(axis=1)#对应列相加,得到a2+b2
  
20     distances   =sqDistanxes**0.5#开方,得到距离。
21     sortedDistIndicies=distances.argsort()#数组值对应的索引从小到大排列
22     #选择距离最小的k个点。
23     classCount={}
24     for i in range(k):
25         voteIlabel=labels[sortedDistIndicies[i]]
26         classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
27     #排序
28     sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
29     return sortedClassCount[0][0]

测试:

from kNN import *

group,labels=createDataSet()

classify0([10,10],group,labels,3)

结果为A

原文地址:https://www.cnblogs.com/sclu/p/11535585.html