K-Means 聚类算法:计算每个点到最近中心点的平均距离
K-Means 聚类算法:计算每个点到最近中心点的平均距离
1. 问题描述
在 K-Means 聚类算法中,我们需要将每个数据点分配到离它最近的中心点类别下,并计算每个点到离它最近的中心点的平均距离。
2. 代码实现
def classify(pt, centers):
temp = [distance(pt, centers[i]) for i in range(len(centers))]
index = np.argmin(temp)
dist = temp[index]
return (index, dist)
# 将每个点归入到离它最近的中心点类别下
########## Begin ##########
# 初始化每个类别的点集
categories = [[] for _ in range(k)]
# 对于每个点,计算其离最近中心点的距离,并将其归入到对应的类别下
for i in range(len(X)):
pt = X[i]
index, _ = classify(pt, centers)
categories[index].append(pt)
# 计算每个点到离它最近的中心点的平均距离
avg_distances = []
for i in range(k):
pts = categories[i]
distances = [distance(pt, centers[i]) for pt in pts]
avg_dist = np.mean(distances)
avg_distances.append(avg_dist)
########## End ##########
3. 代码解析
classify(pt, centers)函数用于计算给定点pt到所有中心点的距离,并返回距离最近的中心点索引和距离。categories数组用于存储每个类别下的所有点。- 代码首先初始化每个类别下的点集为空列表。
- 然后,对于每个点
pt,调用classify函数计算其离最近中心点的距离,并将该点加入到对应的类别下。 - 最后,计算每个类别下所有点到其最近中心点的平均距离,并将结果存储在
avg_distances数组中。
4. 总结
本文介绍了 K-Means 聚类算法中计算每个点到最近中心点的平均距离的代码实现,并提供了完整的代码示例和详细的解释。通过这些代码,我们可以更好地理解 K-Means 算法的计算过程,并将其应用于实际的数据分析任务中。
原文地址: https://www.cveoy.top/t/topic/jpXZ 著作权归作者所有。请勿转载和采集!