我基本上是一个初学者,但我被难住了,我觉得我不应该这样。你知道吗
我正在学习使用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. 你知道吗
我了解它的工作原理,我已经测试过它,但我无法掌握它是如何工作的。我错过了什么?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐