帮我用numpy库写一段有两个簇的k means算法
时间: 2024-05-05 09:18:45 浏览: 10
好的,以下是使用numpy库实现两个簇的k means算法的代码:
```python
import numpy as np
def k_means(data, k):
# 随机初始化k个中心点
centroids = data[np.random.choice(len(data), k, replace=False)]
while True:
# 计算每个样本点距离每个中心点的距离
distances = np.linalg.norm(data[:, np.newaxis] - centroids, axis=2)
# 分配每个样本点到最近的中心点所在的簇
clusters = np.argmin(distances, axis=1)
# 更新中心点的位置为所在簇的均值
new_centroids = np.array([data[clusters == i].mean(axis=0) for i in range(k)])
# 判断中心点是否已经收敛
if np.allclose(new_centroids, centroids):
break
centroids = new_centroids
return clusters, centroids
```
其中,`data`是一个包含多个样本点的numpy数组,每行代表一个样本点,每列代表一个特征;`k`是簇的个数。函数返回两个numpy数组,分别是每个样本点所属的簇的编号和每个簇的中心点坐标。