可以写一个kmeans的demo吗
时间: 2024-01-23 22:02:12 浏览: 29
当然可以!下面是一个简单的K-Means聚类的Python实现示例。
```python
import numpy as np
import matplotlib.pyplot as plt
def kmeans(X, K, max_iters=100):
# 随机初始化聚类中心
centroids = X[np.random.choice(X.shape[0], K, replace=False)]
for i in range(max_iters):
# 计算每个样本距离每个聚类中心的距离
distances = np.sqrt(((X - centroids[:, np.newaxis]) ** 2).sum(axis=2))
# 将每个样本分配到最近的聚类中心
labels = np.argmin(distances, axis=0)
# 更新聚类中心
for k in range(K):
centroids[k] = X[labels == k].mean(axis=0)
return labels, centroids
# 生成随机数据
X = np.random.randn(100, 2)
# 聚类
labels, centroids = kmeans(X, K=3)
# 可视化聚类结果
colors = ['r', 'g', 'b']
for k in range(len(centroids)):
plt.scatter(X[labels == k][:, 0], X[labels == k][:, 1], c=colors[k])
plt.scatter(centroids[k][0], centroids[k][1], marker='x', s=200, linewidths=3, c='k')
plt.show()
```
这段代码生成100个2维随机数据,并使用K-Means算法将数据聚成3个簇。最后,绘制聚类结果图形。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)