K-Means 聚类算法是一种常用的无监督学习算法,它将数据集分成 K 个簇,使得每个簇内的数据点尽可能接近,而簇与簇之间的数据点尽可能远。下面将介绍如何使用 Python 实现 K-Means 聚类算法。

1. 算法原理

K-Means 算法的基本步骤如下:

  1. 随机选择 K 个数据点作为初始质心。
  2. 将每个数据点分配到最近的质心所在的簇。
  3. 计算每个簇的质心,即该簇中所有数据点的均值。
  4. 重复步骤 2 和 3,直到质心不再发生显著变化。

2. Python 实现

下面是一个使用 Python 实现的 K-Means 聚类算法的简单示例:

import numpy as np

def k_means(data, k):
    # 随机选择 K 个数据点作为初始质心
    centroids = data[np.random.choice(data.shape[0], k, replace=False)]
    
    # 循环执行步骤 2 和 3
    while True:
        # 将每个数据点分配到最近的质心所在的簇
        clusters = np.argmin(np.linalg.norm(data[:, np.newaxis] - centroids, axis=2), axis=1)
        
        # 计算每个簇的质心
        new_centroids = np.array([data[clusters == i].mean(axis=0) for i in range(k)])
        
        # 判断是否收敛
        if np.allclose(new_centroids, centroids):
            break
        
        centroids = new_centroids
    
    return clusters, centroids

# 示例数据
data = np.array([[1, 2], [1, 4], [1, 0],
                  [10, 2], [10, 4], [10, 0]])

# 调用 k_means 函数
clusters, centroids = k_means(data, 2)

print("聚类结果:", clusters)
print("质心:", centroids)

3. 扩展阅读

如果您想了解更多关于 K-Means 聚类算法的信息,可以参考以下链接:

4. 图片展示

下面是 K-Means 聚类算法的示意图:

K-Means 聚类算法示意图