K-means 聚类算法是机器学习中的经典算法,用于将数据点分组。以下是一个 K-means 算法的简单实现。
1. 算法步骤
- 初始化: 随机选择 K 个数据点作为初始质心。
- 分配: 将每个数据点分配到最近的质心所在的簇中。
- 更新: 计算每个簇的平均值,并将每个质心更新为对应簇数据点的平均值。
- 重复: 重复步骤 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 算法示例图