Python 如何使用所有数据点计算每个质心的距离?
我有数据集,我应用了最多5个聚类的聚类算法,所以我必须计算每个质心和所有数据点之间的距离。 如何在Python中实现这一点。 如果质心是Python 如何使用所有数据点计算每个质心的距离?,python,euclidean-distance,Python,Euclidean Distance,我有数据集,我应用了最多5个聚类的聚类算法,所以我必须计算每个质心和所有数据点之间的距离。 如何在Python中实现这一点。 如果质心是 [[ -2.77556e-17,-2.66454e-15],[0.106509,6.99408],[0.0555556,3.72222],[1.38778e-17,1.1],[1.38778e-17,8]] 数据点是 [[1,7][1,7][1,7][1,7][1,7][1,7][1,3][1,7][1,7][1,7][0,7][0,7][0,7][0,6]
[[ -2.77556e-17,-2.66454e-15],[0.106509,6.99408],[0.0555556,3.72222],[1.38778e-17,1.1],[1.38778e-17,8]]
数据点是
[[1,7][1,7][1,7][1,7][1,7][1,7][1,3][1,7][1,7][1,7][0,7][0,7][0,7][0,6][0,1][0,1][0,1][0,1][0,1][0,1][0,0][0,0][0,0][0,7][0,0][0,0][0,0][0,4][0,4][0,4][0 4][0,4][0,7][0,8][0,8][0,8][0,8][0,7][0,7][0,7][0,7][0,7][0,7][0,7][0,7][0,7][0,7][0,7][0,3][0,3][0,0][0,0][0,3][0 3][0 0][0 3][0 3][0 3][0 0][0 3][0 3][0 2][0 4][0 4][0 0][0 4][0 4][0 2][0 7][0 7][0 7][0 7][0 0][0 0][0 0][0 5][0 7][0 0][0 0]]
要计算两点之间的距离,您可以这样做
import math
def calculateDistance(x1,y1,x2,y2):
dist = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
return dist
您可以使用循环计算距离,并将每个质心的距离保存在字典中
centroids=[[ -2.77556e-17,-2.66454e-15],[0.106509,6.99408],[0.0555556,3.72222],[1.38778e-17, 1.1],[1.38778e-17, 8]]
data_points=[[1 ,7],[1, 7],[1, 7],[1, 7],[1, 7],[1 ,7],[1 ,3],[1, 7],
[1, 7],[1 ,7],[0, 7],[0, 7],[0, 7],[0, 6],[0, 1],[0, 1],
[0, 1],[0, 1],[0 ,1]]
import math
def calculateDistance(x1,y1,x2,y2):
dist = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
return dist
dic={}
i=1
for centroid in centroids:
centroid_name="centroid"+str(i)
dic[centroid_name]=[]
for data_point in data_points:
dic[centroid_name].append(calculateDistance(centroid[0],centroid[1],data_point[0],data_point[1]))
i=i+1
结果:
{'centroid1': [7.071067811865478,
7.071067811865478,
7.071067811865478,
7.071067811865478,
7.071067811865478,
7.071067811865478,
3.1622776601683817,
7.071067811865478,
7.071067811865478,
7.071067811865478,
7.000000000000003,
7.000000000000003,
7.000000000000003,
6.000000000000003,
1.0000000000000027,
1.0000000000000027,
1.0000000000000027,
1.0000000000000027,
1.0000000000000027],...