K-Means 聚类算法是一种无监督学习算法,它通过将数据点分组到 K 个簇中,使得簇内数据点相似度较高,簇间数据点相似度较低。下面将为您介绍 K-Means 聚类算法的基本原理和实现方法。
基本原理
- 初始化聚类中心:随机选择 K 个数据点作为初始聚类中心。
- 分配数据点:将每个数据点分配到距离它最近的聚类中心所在的簇。
- 更新聚类中心:计算每个簇中所有数据点的均值,并将该均值作为新的聚类中心。
- 重复步骤 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 聚类算法。😊