我有了原始数据data,和clusters, centroids。怎么把所有的簇都用折线图画出来,并画出质心。
时间: 2024-03-10 07:43:53 浏览: 75
首先,您需要将数据点分配到它们所属的簇中。可以通过计算每个数据点到每个质心的距离来完成此操作,然后将其分配到距离最近的质心所在的簇中。
一旦您将数据点分配到簇中,您可以将每个簇的数据点绘制为折线图。对于每个簇,您需要按照数据点的顺序连接它们之间的线段,以形成折线图。
最后,您可以将每个质心绘制为点,以使其在折线图中可见。
以下是一个Python示例代码,它可以将数据点分配到簇中,并将每个簇的数据点绘制为折线图,并将质心绘制为点:
```python
import matplotlib.pyplot as plt
import numpy as np
# 假设您已经有了数据,簇和质心
data = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
clusters = np.array([0, 1, 0, 1, 2, 2])
centroids = np.array([[2, 3], [6, 7], [10, 11]])
# 将数据点分配到它们所属的簇中
cluster_data = [[] for i in range(len(centroids))]
for i, d in enumerate(data):
c = clusters[i]
cluster_data[c].append(d)
# 绘制每个簇的折线图
for i, c in enumerate(cluster_data):
c = np.array(c)
plt.plot(c[:, 0], c[:, 1], label='Cluster {}'.format(i))
# 绘制每个质心
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=150, linewidths=3, color='black', zorder=10)
# 添加标签和图例
plt.title('Clustered Data')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
# 显示图形
plt.show()
```
这个代码将产生一个图形,显示每个簇的数据点的折线图,并将质心绘制为点。您可以根据自己的需求调整此代码以满足您的要求。
阅读全文