GaussianMixture聚类准确率

直接用sklearn里面的GaussianMixture对iris数据集进行聚类,准确率为什么很低呢?

iris=datasets.load_iris()
x=iris.data
y=iris.data
K=3#高斯混合的数目
gmm=GaussianMixture(n_components=K,covariance_type='full', random_state=0)
labels=gmm.predict(y)
print(labels)
######
运行后结果
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 2 1 2
2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1]
数据集标签
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]

怎么提高准确率呢

望采纳


其实你的准确率挺高的,因为聚类算法只知道最后的几个类别,但是类别编号并不知道,你把你的结果里的1和2调换一下,再判定就是没问题的。

import sklearn
from sklearn import datasets

# 读取iris数据集
iris = datasets.load_iris()

# 接下来,使用sklearn库中的`GaussianMixture`类来创建一个高斯混合模型,并用它来对iris数据集进行聚类:
from sklearn.mixture import GaussianMixture

# 创建一个高斯混合模型
gmm = GaussianMixture(n_components=3)

# 使用iris数据集进行聚类
gmm.fit(iris.data)

# 打印聚类结果
print(gmm.predict(iris.data))