调库实现 Kmeans 聚类 步骤 3.1:读入 PCA 降维后的二维鸢尾花数据集 二维鸢尾花数据说明: 共 150 样本*(2 列属性项+1 列标记),样本 1-50 为第 1 类(Iris Setosa),第 51-100 样本为第 2 类(Iris Versicolour),第 101-150 样本为第 3 类(Iris Virginica) 步骤 3.2:调用 sklearn 库中的 Kmeans 类进行 K=2 的聚类,得到各样本的所归属 簇的编号 步骤 3.3:调用 matplotlib 的 scatter 函数将聚类后各样本以及聚类中心的可视化 输出(不同簇内的样本用不同的颜色表示)。(也可以调用其他第三方库进行样 本的可视化) 步 骤 3.4 : 调 用 sklearn 库 中 的 rand_score 、 fowlkes_mallows_score 、 davies_bouldin_score 函数,计算得到外部指标(RI、FMI)和内部指标(DBI)
时间: 2024-03-20 20:38:41 浏览: 71
好的,我明白了。下面是实现 Kmeans 聚类的代码:
```python
from sklearn.cluster import KMeans
from sklearn.metrics import rand_score, fowlkes_mallows_score, davies_bouldin_score
import matplotlib.pyplot as plt
import pandas as pd
# 步骤 3.1 读入数据集
data = pd.read_csv('pca_iris.csv')
X = data.iloc[:, :-1].values
# 步骤 3.2 进行聚类
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
labels = kmeans.labels_
# 步骤 3.3 可视化聚类结果
centers = kmeans.cluster_centers_
plt.scatter(X[labels == 0, 0], X[labels == 0, 1], c='red', label='Cluster 1')
plt.scatter(X[labels == 1, 0], X[labels == 1, 1], c='blue', label='Cluster 2')
plt.scatter(centers[:, 0], centers[:, 1], marker='x', s=200, linewidths=3, color='black', label='Centroids')
plt.title('Kmeans Clustering')
plt.xlabel('PCA1')
plt.ylabel('PCA2')
plt.legend()
plt.show()
# 步骤 3.4 计算外部指标和内部指标
y_true = data.iloc[:, -1].values
print('Rand index:', rand_score(y_true, labels))
print('Fowlkes-Mallows index:', fowlkes_mallows_score(y_true, labels))
print('Davies-Bouldin index:', davies_bouldin_score(X, labels))
```
这段代码中,我们首先读入了经过 PCA 降维后的二维鸢尾花数据集,然后调用了 sklearn 库中的 KMeans 类进行 K=2 的聚类。接着,我们使用 matplotlib 库的 scatter 函数将聚类结果可视化,并调用了 sklearn 库中的 rand_score、fowlkes_mallows_score 和 davies_bouldin_score 函数计算外部指标和内部指标。
阅读全文