假设已知某一类别的多个点
机器学习之k-近邻算法 思想
1)计算某一类别的多个点与当前点的距离
2)对距离进行升序排序
3)选取与当前点距离最小的多个点
4)确定前多个点所在类别出现的频率
5)返回前多个点出现频率最高的类别作为当前点的预测分类
def classify(inX,dataSet,labels,k):
#距离计算
dataSetSize = dataSet.shape[0]
diffMat = tile(inX,(dataSetSize,1))-dataSet
sqDiffMat = diffMat ** 2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances **0.5
sortedDistIndicies = distances.argsort()
classCount={}
#选择距离最小的点
for i in range(k):
voteIlable lables[sortedDistIndicies[i]]
classCount[voteIlable] = classCount.get(voteIlable,0) + 1
#排序
sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]