K-Means 聚类算法是一种无监督学习算法,它将数据集分成若干个簇(Cluster),使得同一个簇内的数据点尽可能接近,而不同簇的数据点尽可能远。下面将介绍 K-Means 聚类算法的基本原理和实现方法。
基本原理
- 初始化:随机选择 K 个数据点作为初始聚类中心。
- 分配:将每个数据点分配到最近的聚类中心,形成 K 个簇。
- 更新:计算每个簇的平均值,并将聚类中心更新为平均值。
- 迭代:重复步骤 2 和 3,直到聚类中心不再发生变化或达到预设的迭代次数。
实现方法
以下是一个简单的 K-Means 聚类算法实现示例:
import numpy as np
def k_means(data, k):
# 初始化聚类中心
centroids = data[np.random.choice(data.shape[0], k, replace=False)]
# 迭代
for _ in range(10):
# 分配
clusters = [[] for _ in range(k)]
for point in data:
distances = np.linalg.norm(point - centroids, axis=1)
closest_centroid = np.argmin(distances)
clusters[closest_centroid].append(point)
# 更新
new_centroids = np.array([np.mean(cluster, axis=0) for cluster in clusters])
if np.allclose(new_centroids, centroids):
break
centroids = new_centroids
return clusters, centroids
应用场景
K-Means 聚类算法广泛应用于以下场景:
- 数据挖掘:将数据集划分为不同的簇,以便更好地理解数据。
- 图像处理:将图像分割成不同的区域,以便进行后续处理。
- 文本分析:将文本数据聚类,以便进行主题建模。
扩展阅读
更多关于 K-Means 聚类算法的介绍,请参考以下链接:
K-Means 聚类算法示例