【问题标题】:KNeighborsClassifier Euclidean Distance calculationKNeighborsClassifier 欧几里得距离计算
【发布时间】:2018-09-29 18:49:35
【问题描述】:

我有一个关于KNeighborsClassifier的问题

这是我为irisdataset 提供的代码。

iris = datasets.load_iris()
X = iris.data # Independent variables
y = iris.target # response or target or dependent variables

x_train, x_test, y_train,y_test = (train_test_split(X,y, test_size=0.3,
                                                   random_state=42,
                                                   stratify=y))

knn = KNeighborsClassifier(n_neighbors = 5)
knn.fit(x_train, y_train)
prediction = knn.predict(x_test)
print (accuracy_score(y_test, prediction))

所以我知道两点之间的距离是使用欧几里得距离计算的。

例如,训练 iris 数据集有 4 个特征,而测试 iris 数据集也有 4 个特征,那么如何计算这 4 个列值之间的欧几里得距离。假设这是我们的train 数据

array([[5.1, 2.5, 3. , 1.1],
       [6.2, 2.2, 4.5, 1.5],
       [5.1, 3.8, 1.5, 0.3],
       [6.8, 3.2, 5.9, 2.3]]

这是我们的test 数据

array([[7.3, 2.9, 6.3, 1.8],
       [6.1, 2.9, 4.7, 1.4],
       [6.3, 2.8, 5.1, 1.5],
       [6.3, 3.3, 4.7, 1.6]]

如何计算四个点的欧几里得距离?

【问题讨论】:

标签: python machine-learning


【解决方案1】:

与平面上的两个点或 3D 空间中的 3 个点相同 - 但现在扩展到 4 维向量空间:

sqrt((a1-b1)^2+(a2-b2)^2+(a3-b3)^2+(a4-b4)^2)

这扩展到任意数量的维度

【讨论】:

  • 所以即使对于 4 维向量空间也是一样的。我几乎没有怀疑。当我看到欧几里得距离公式sqrt((x2-x1)^2 + (y2-y2)^2 时,我认为 4 个特征会有所不同。谢谢。