【发布时间】:2018-04-08 14:01:02
【问题描述】:
我正在尝试遵循 k-Nearest Neighbors 的示例,但我不确定 numpy 命令语法。我应该进行矩阵距离计算,给出的代码是
def classify(inputVector, trainingData,labels,k):
dataSetSize=trainingData.shape[0]
diffMat=tile(inputVector,(dataSetSize,1))-trainingData
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
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
我的问题是sqDistances**0.5 如何等于距离方程((A[0]-B[0])+(A[1]-B[1]))^1/2?我不了解 tile 是如何影响它的,具体而言,矩阵是如何由 (datasetsize,1) 训练数据构成的。
【问题讨论】:
-
也许您可以展示一小部分 inputVector 和 trainingData,我们只能假设它们是数组
-
这是其余的代码段。希望这会有所帮助
标签: python python-2.7 numpy machine-learning