用Python写一个kmeans聚类,要求可以自由调整簇的数量并且可以可视化
时间: 2023-05-19 20:01:55 浏览: 77
好的,以下是一个用Python实现的kmeans聚类的代码,可以自由调整簇的数量并且可以可视化:
```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 j in range(k):
centroids[j] = X[labels == j].mean(axis=0)
return labels, centroids
# 生成随机数据
np.random.seed(42)
X = np.random.randn(100, 2)
# 聚类并可视化结果
labels, centroids = kmeans(X, k=3)
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
希望这个代码能够满足你的需求!
阅读全文