步骤 3.8:调用 matplotlib 的 scatter 函数将聚类后各样本以及聚类中心的可视化 输出(不同簇内的样本用不同的颜色表示)。(也可以调用其他第三方库进行样 本的可视化)
时间: 2024-03-20 07:40:26 浏览: 55
好的,以下是修改后的 Python 代码,用 Matplotlib 绘制聚类结果的散点图:
```python
import numpy as np
import matplotlib.pyplot as plt
# 步骤 3.6:读入 PCA 降维后的二维鸢尾花数据集
data = np.loadtxt('iris_pca_self.csv', delimiter=',')
# 步骤 3.7:按 Kmeans 算法描述的过程完成数据集的聚类处理(取 K=2)
K = 2
n_samples, n_features = data.shape
centers = np.zeros((K, n_features))
labels = np.zeros(n_samples)
# 随机初始化聚类中心
for i in range(K):
centers[i] = data[np.random.choice(range(n_samples))]
# 迭代计算聚类中心和样本所属簇编号
for _ in range(100):
for i in range(n_samples):
distances = np.linalg.norm(data[i] - centers, axis=1)
labels[i] = np.argmin(distances)
for j in range(K):
centers[j] = np.mean(data[labels == j], axis=0)
# 输出聚类结果
print('各样本的所属簇编号:', labels.astype(int))
print('各簇的聚类中心向量:', centers)
# 步骤 3.8:调用 Matplotlib 的 scatter 函数将聚类后各样本以及聚类中心的可视化输出
colors = ['r', 'b']
for i in range(n_samples):
plt.scatter(data[i, 0], data[i, 1], c=colors[int(labels[i])])
for j in range(K):
plt.scatter(centers[j, 0], centers[j, 1], marker='*', s=150, c='k')
plt.show()
```
这里使用 Matplotlib 的 scatter 函数绘制聚类结果的散点图。首先,我们将每个样本的颜色根据其所属簇的编号进行了区分。其中,红色表示编号为 0 的簇,蓝色表示编号为 1 的簇。然后,我们将聚类中心用星号标记,并使用黑色进行了填充。最后,使用 plt.show() 函数显示图像。
你可以在本地运行这段代码,查看聚类结果的可视化输出。
阅读全文