K-Means 聚类算法是一种无监督学习算法,它通过将数据点分组到 K 个簇中,使得簇内数据点相似度较高,簇间数据点相似度较低。下面将为您介绍 K-Means 聚类算法的基本原理和实现方法。

基本原理

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

代码实现

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

def k_means(data, k):
    # 初始化聚类中心
    centers = data[np.random.choice(range(len(data)), k)]
    
    # 循环执行分配和更新
    for _ in range(100):
        # 分配数据点
        labels = np.argmin([np.linalg.norm(data[i] - centers[j])**2 for j in range(k)], axis=0)
        
        # 更新聚类中心
        new_centers = np.array([data[labels==j].mean(axis=0) for j in range(k)])
        
        # 判断是否收敛
        if np.linalg.norm(new_centers - centers) < 1e-5:
            break
        
        centers = new_centers
    
    return labels, centers

扩展阅读

如果您想了解更多关于 K-Means 聚类算法的知识,可以阅读以下文章:

希望这篇教程能帮助您更好地理解 K-Means 聚类算法。😊