from numpy import * import operator from os import listdir def classify0(inX, dataSet, labels, k): dataSetSize = dataSet.shape[0] diffMat = tile(inX, (dataSetSize, 1)) - dataSet # print(diffMat) sqDiffMat = diffMat ** 2 # print(sqDiffMat) sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances ** 0.5 sortedDistIndicies = distances.argsort() classCount = {} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] # print(voteIlabel) # 停机出现的次数 classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 print(classCount[voteIlabel]) # 又大到小排序 sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True) print(sortedClassCount) return sortedClassCount[0][0] # 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 = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labels = ['A', 'A', 'B', 'B'] t =classify0([0, 0], group, labels, 3) print(t)
k_临近算法
最新推荐文章于 2022-06-14 12:08:15 发布