python中kNN计算的表决过程(数组.argsort)

2024-10-08 21:19:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我基本上是一个初学者,但我被难住了,我觉得我不应该这样。你知道吗

我正在学习使用numpy的kNN算法。代码如下:

    def kNN_classify(query, dataset, labels, k):

dataSetSize = dataset.shape[0]
diffMat = tile(query, (dataSetSize,1)) - dataset
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedIndices = distances.argsort()
classCount = dict()
for i in range(k):
    voteIlabel = labels[sortedIndices[i]]
    classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
sortedClassCount = sorted(classCount.items(), key = 
operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]

我首先使用基本毕达哥拉斯得到一个距离查询点的数组。在此数组中,距离的顺序与原始数据中的点相同,与标签相同。然后我使用argsort得到一个数组,它给出了距离的排序顺序。然后我迭代这个数组并投票给label,它有距离.argsort. 你知道吗

我了解它的工作原理,我已经测试过它,但我无法掌握它是如何工作的。我错过了什么?你知道吗


Tags: 距离labels数组querydatasetknndistancesargsort

热门问题