编写一个简单的kmeas算法代码
时间: 2024-03-21 16:39:53 浏览: 18
好的,下面是一个简单的k-means算法的Python代码实现:
```python
import numpy as np
def kmeans(X, K, max_iters=100):
# 随机初始化 K 个聚类中心
centroids = X[np.random.choice(X.shape[0], K, replace=False), :]
for i in range(max_iters):
# 将每个样本指派到离它最近的聚类中心,形成 K 个簇
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
labels = np.argmin(distances, axis=0)
# 将每个簇的聚类中心更新为该簇所有样本的平均值
new_centroids = np.array([X[labels==k].mean(axis=0) for k in range(K)])
# 判断聚类中心是否发生改变
if np.allclose(centroids, new_centroids):
break
centroids = new_centroids
return labels
```
其中,X是数据集,K是聚类数目,max_iters是最大迭代次数。函数返回的是每个样本所属的聚类簇标签。需要注意的是,该实现中使用的是欧几里得距离计算样本与聚类中心的距离。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)