写一个k-means++程序
时间: 2024-05-10 16:16:08 浏览: 101
K-means-plus-plus:K-means++ 实现
好的,以下是一个简单的k-means程序的代码,供参考:
```python
import numpy as np
def k_means(X, k, max_iters=100):
centers = X[np.random.choice(len(X), k, False)]
for i in range(max_iters):
clusters = [[] for _ in range(k)]
for x in X:
distances = np.linalg.norm(x - centers, axis=1)
clusters[np.argmin(distances)].append(x)
new_centers = [np.mean(c, axis=0) for c in clusters]
# 检查聚类中心是否收敛
if np.allclose(new_centers, centers):
break
centers = new_centers
return centers, clusters
```
这是一个比较简单的k-means实现,输入为一个数据集X、聚类中心个数k,输出为聚类中心centers和每个数据点所属的簇clusters。max_iters参数可以控制最大迭代次数,默认为100次。
阅读全文