K-Means 算法是一种聚类算法,它通过迭代的方式将数据集中的点划分成 K 个簇,使得每个簇内的点尽可能接近,而不同簇之间的点尽可能远。

算法步骤

  1. 初始化:随机选择 K 个点作为初始的簇中心。
  2. 分配:将每个数据点分配到最近的簇中心,形成 K 个簇。
  3. 更新:重新计算每个簇的中心点。
  4. 迭代:重复步骤 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 算法流程图