K-Means 算法是一种聚类算法,它通过迭代的方式将数据集中的点划分成 K 个簇,使得每个簇内的点尽可能接近,而不同簇之间的点尽可能远。
算法步骤
- 初始化:随机选择 K 个点作为初始的簇中心。
- 分配:将每个数据点分配到最近的簇中心,形成 K 个簇。
- 更新:重新计算每个簇的中心点。
- 迭代:重复步骤 2 和 3,直到满足停止条件(例如,簇中心不再变化)。
代码示例
以下是一个简单的 K-Means 算法 Python 代码示例:
def k_means(data, k):
# 初始化簇中心
centroids = select_centroids(data, k)
while True:
# 分配数据点
clusters = {}
for point in data:
closest_centroid = find_closest_centroid(point, centroids)
if closest_centroid not in clusters:
clusters[closest_centroid] = []
clusters[closest_centroid].append(point)
# 更新簇中心
new_centroids = {}
for centroid, points in clusters.items():
new_centroid = calculate_centroid(points)
if new_centroid not in new_centroids:
new_centroids[new_centroid] = 0
new_centroids[new_centroid] += 1
# 检查是否收敛
if not is_converged(centroids, new_centroids):
centroids = new_centroids
else:
break
return clusters
# 辅助函数:选择初始簇中心、找到最近簇中心、计算簇中心、检查收敛
扩展阅读
更多关于 K-Means 算法的介绍和实现,请参考本站教程:K-Means 算法教程
K-Means 算法流程图