书上有一部分的变量名字很长 然后偷换了一下 就变成了比较容易懂的了
主要是那个小驼峰命名实在是有点蛋疼了 我还是喜欢下划线
from numpy import *
import operator
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group,labels
group,labels=createDataSet();
#print group
#print labels
def classify0(inX,dataSet,labels,k):
row_size=dataSet.shape[0]
diffMat = tile(inX,(row_size,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
dis = sqDistances**0.5
# print dis
rk = dis.argsort()
# print rk
sum={}
for i in range(k):
j = labels[rk[i]]
sum[j]=sum.get(j,0)+1
_sort=sorted(sum.iteritems(),key=operator.itemgetter(1),reverse=True)
return _sort[0][0]
print classify0([999,999],group,labels,3)
1、确定已知的类别数据集中的点到当前点之间的距离
2、按照距离递增次序排序
3、选取与当前点距离最小的k个点
4、确定前k个点所在的类别的出现频率
5、返回前k个点出现频率最高的类别作为当前点的预测分类