python 實現簡單的KNN算法
阿新 • • 發佈:2018-08-10
range 簡單 ssi sorted 動作 sort 算法 pre eve
from numpy import * import operator def createDataSet(): group = array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]]) labels = [‘愛情片‘,‘愛情片‘,‘愛情片‘,‘動作片‘,‘動作片‘,‘動作片‘] return group, labels def classify0(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): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 sortedClassCount= sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0] group,labels = createDataSet() print(classify0([500,90],group,labels,3))
python 實現簡單的KNN算法