kmeans算法代码实现
时间: 2023-10-05 13:09:58 浏览: 64
kmeans算法实现
好的,以下是kmeans算法的Python代码实现:
```python
import numpy as np
def kmeans(data, k, max_iter=100):
# 随机初始化k个质心
centroids = data[np.random.choice(len(data), k, replace=False)]
for i in range(max_iter):
# 计算每个样本距离质心的距离
distances = np.sqrt(((data - centroids[:, np.newaxis])**2).sum(axis=2))
# 将每个样本分配到距离最近的质心
labels = np.argmin(distances, axis=0)
# 更新质心为所属类别的均值
new_centroids = np.array([data[labels == j].mean(axis=0) for j in range(k)])
# 如果质心不再发生变化,则退出循环
if np.allclose(new_centroids, centroids):
break
centroids = new_centroids
return centroids, labels
```
其中,`data`是一个二维NumPy数组,每行代表一个样本,每列代表一个特征;`k`是聚类的数量;`max_iter`是最大迭代次数。该函数会返回最终的质心和每个样本所属的类别。
阅读全文