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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录