K-means聚类算法的代码实现
时间: 2023-07-07 21:26:51 浏览: 51
好的,以下是K-means聚类算法的Python代码实现,供您参考:
```python
import numpy as np
import random
def k_means(X, k, max_iterations=100):
"""
:param X: 二维数据集,每一行表示一个样本
:param k: 聚类的数量
:param max_iterations: 最大迭代次数
:return: 聚类结果和聚类中心
"""
# 随机选取k个样本作为初始聚类中心
centroids = X[random.sample(range(X.shape[0]), k)]
# 用来存储每个样本所属的聚类的索引
cluster_assignment = np.zeros(X.shape[0], dtype=int)
for i in range(max_iterations):
# 计算每个样本到聚类中心的距离,将样本归到距离最近的聚类中心所在的类别
for j in range(X.shape[0]):
distances = np.linalg.norm(X[j] - centroids, axis=1)
cluster_assignment[j] = np.argmin(distances)
# 更新聚类中心
for j in range(k):
centroids[j] = np.mean(X[cluster_assignment == j], axis=0)
return cluster_assignment, centroids
```
这段代码实现了经典的K-means聚类算法,输入参数包括数据集X、聚类的数量k和最大迭代次数max_iterations。输出结果包括每个样本所属的聚类的索引和聚类中心。