K-means 聚类算法是机器学习中的经典算法,用于将数据点分组。以下是一个 K-means 算法的简单实现。

1. 算法步骤

  1. 初始化: 随机选择 K 个数据点作为初始质心。
  2. 分配: 将每个数据点分配到最近的质心所在的簇中。
  3. 更新: 计算每个簇的平均值,并将每个质心更新为对应簇数据点的平均值。
  4. 重复: 重复步骤 2 和 3,直到质心不再变化或者达到预设的迭代次数。

2. Python 实现

以下是一个简单的 K-means 算法 Python 实现:

def k_means(data, k):
    # 初始化质心
    centroids = data[np.random.choice(range(len(data)), k, replace=False)]
    
    while True:
        # 分配数据点
        clusters = [[] for _ in range(k)]
        for point in data:
            distances = [np.linalg.norm(point - centroid) for centroid in centroids]
            closest = np.argmin(distances)
            clusters[closest].append(point)
        
        # 更新质心
        new_centroids = []
        for cluster in clusters:
            if cluster:
                new_centroids.append(np.mean(cluster, axis=0))
        
        # 检查是否收敛
        if np.allclose(new_centroids, centroids):
            break
        
        centroids = new_centroids
    
    return clusters

3. 扩展阅读

更多关于 K-means 算法的实现和优化,可以参考以下链接:K-means 算法详解

K-means 算法示例图