数据科学计算欧几里得距离

时间:2020-12-20 12:45:57

标签: python cluster-analysis distance knn

我需要帮助来解决这个挑战,我尝试用不同的方法来做到这一点,但最后几个测试用例给了我错误。这是一个 Sololearn 挑战。他们允许我寻求帮助。

任务:

<块引用>

假设给定的簇中有两个簇 二维数据点和两个随机点 (0, 0) 和 (2, 2) 是初始聚类质心。计算欧氏距离 在每个数据点和每个质心之间,分配每个数据 指向它最近的质心,然后计算新的质心。如果 有一个平局,将数据点分配给质心为 (0, 0)。如果没有数据点分配给给定的质心,则返回 None。

输入格式:

<块引用>

第一行:一个整数,表示 数据点数 (n) 接下来的 n 行:每行两个数值 线表示二维空间中的数据点。

输出格式

<块引用>

两个质心的两个列表。数字四舍五入到小数点后第二位 地点。

样本输入:

3

1 0

0 .5

4 0

样本输出:

[0.5 0.25]

[4. 0.]

  • 我的尝试:
n = int(input())
X = []
for i in range(n):
    X.append([float(x) for x in input().split()])
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import numpy as np
from sklearn.metrics.pairwise import euclidean_distances
scale = StandardScaler()
scale.fit(X)
X_scaled = scale.transform(X)
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
s=(kmeans.cluster_centers_)
for a in s:
    print(np.around(a,2))

1 个答案:

答案 0 :(得分:0)

根据勾股定理使用这个公式:

例如

import math

x1 = 1 

y1 = 3

x2 = 6

y2 = 8

a = x2 - x1 #get length "a" of triangle rectangle

b = y2 - y1 #get length "b" of triangle rectangle

c = math.sqrt((a**2) + (b**2)) #distance between two 2D coordinates/hypotenuse

易于理解,而且快速简单。