# 聚类数据 import numpy as np pos = np.arange(0, 6, 5) # 两个中心点在x=0,x=5 size = 50 # 生成两个簇 x = np.array([ np.random.normal(i+np.random.random(), 1, size) for i in pos ]).flatten() y = np.array([ np.random.normal(i+np.random.random(), 1, size) for i in pos ]).flatten() print(x.shape, y.shape)编写Python程序,实现以下要求: 画出上面数据的散点图 采用scipy.cluster.vq.kmeans()聚类,并在散点图中画出聚类中心点
时间: 2024-01-10 09:04:55 浏览: 145
以下是实现要求的Python代码:
```python
import numpy as np
from scipy.cluster.vq import kmeans
import matplotlib.pyplot as plt
pos = np.arange(0, 6, 5) # 两个中心点在x=0,x=5
size = 50 # 生成两个簇
x = np.array([np.random.normal(i+np.random.random(), 1, size) for i in pos]).flatten()
y = np.array([np.random.normal(i+np.random.random(), 1, size) for i in pos]).flatten()
# 画出散点图
plt.scatter(x, y)
# 聚类
data = np.array(list(zip(x, y)))
centroids, _ = kmeans(data, 2)
# 画出聚类中心点
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
运行程序后,会弹出一个散点图窗口,其中红色叉号表示聚类中心点。
阅读全文