写一段演示kmeans算法的代码
时间: 2023-11-30 10:15:08 浏览: 65
好的,以下是一个简单的演示kmeans算法的Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
X = np.concatenate([np.random.normal(0, 1, (50, 2)), np.random.normal(5, 1, (50, 2))])
# 定义kmeans函数
def kmeans(X, k=2, max_iter=100):
# 随机初始化聚类中心
centers = X[np.random.choice(len(X), k, replace=False)]
for i in range(max_iter):
# 计算每个样本到聚类中心的距离
distances = np.linalg.norm(X[:, np.newaxis] - centers, axis=-1)
# 找到每个样本距离最近的聚类中心
labels = np.argmin(distances, axis=-1)
# 更新聚类中心
for j in range(k):
centers[j] = np.mean(X[labels == j], axis=0)
return centers, labels
# 调用kmeans函数
centers, labels = kmeans(X, k=2)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='*', s=200, c='r')
plt.show()
```
代码中先生成了一个包含100个样本的二维数据集,然后定义了一个kmeans函数,其中随机初始化聚类中心,然后迭代更新聚类中心和样本的标签,直到达到最大迭代次数。最后调用kmeans函数并可视化结果。
阅读全文