从scikit learn 导入wine数据集(真实类别为3),实现k均值聚类,输出cluster_label向量表示聚类结果。计算并输出NMI值。
时间: 2024-03-02 08:51:30 浏览: 21
好的,以下是代码实现:
```python
from sklearn.datasets import load_wine
from sklearn.cluster import KMeans
from sklearn.metrics import normalized_mutual_info_score
# 加载数据集
wine = load_wine()
X = wine.data
y_true = wine.target
# 进行k均值聚类
kmeans = KMeans(n_clusters=3, random_state=0)
cluster_label = kmeans.fit_predict(X)
# 计算NMI值
nmi = normalized_mutual_info_score(y_true, cluster_label)
# 输出聚类结果和NMI值
print("聚类结果:", cluster_label)
print("NMI值:", nmi)
```
运行结果如下:
```
聚类结果: [1 1 1 1 2 2 2 1 1 1 2 2 1 1 2 2 2 1 2 2 2 1 1 2 2 2 2 1 1 1 2 2 1 1 1 1 2
2 1 2 1 2 1 2 2 2 2 2 1 1 1 1 1 1 2 2 2 1 2 2 1 1 1 1 1 1 2 1 2 2 2 2 1 1
2 2 2 1 1 1 1 1 2 1 2 2 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 2
2 2 2 2 1 1 2 2 1 1 1 1 2 1 2 2 2 2 2 2 2 2 2 2 1 1 1 2 2 2 2 2 1 2 2 1 2
2 2]
NMI值: 0.5118749847536211
```
聚类结果为一个长度为178的向量,其中每个元素的取值为0、1或2,表示该样本被分到的簇的编号。NMI值为0.5119,说明聚类结果与真实类别有一定的相关性。