k-means聚类python代码
时间: 2023-07-22 17:06:40 浏览: 61
以下是使用Python实现k-means聚类的代码:
```python
import numpy as np
def kmeans(data, k):
# 随机选取k个中心点
centroids = data[np.random.choice(data.shape[0], k, replace=False), :]
# 初始化每个样本所属的簇
clusters = np.zeros(data.shape[0])
while True:
# 计算每个样本到每个中心点的距离
distances = np.sqrt(((data - centroids[:, np.newaxis])**2).sum(axis=2))
# 将样本分配到距离最近的中心点所在的簇
new_clusters = np.argmin(distances, axis=0)
# 如果当前簇分配不再发生变化,则退出循环
if (new_clusters == clusters).all():
break
# 更新每个簇的中心点
for i in range(k):
centroids[i, :] = np.mean(data[new_clusters == i, :], axis=0)
clusters = new_clusters
return clusters, centroids
```
其中,`data`是一个$n \times d$的numpy数组,表示$n$个$d$维样本;`k`是要分成的簇的数量。
函数返回一个长度为$n$的numpy数组`clusters`,表示每个样本所属的簇的编号,以及一个$k \times d$的numpy数组`centroids`,表示每个簇的中心点坐标。
阅读全文