首页 > 解决方案 > 如何识别 kmeans 集群图中的标签?

问题描述

背景:

我正在处理文本(包含 1000 个文档的数据集 - 使用 Gensim lib 应用 Doc2Vec),最后每个文档都有一个 300 维矩阵。

所以我基于这个模型使用 K-means 做了一个集群。

输入:

from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

kmeans_model = KMeans(n_clusters=5, init='k-means++', max_iter=100) 

X = kmeans_model.fit(model.docvecs.vectors_docs)

labels = kmeans_model.labels_.tolist()

l = kmeans_model.fit_predict(model.docvecs.vectors_docs)

pca = PCA(n_components=2).fit(model.docvecs.vectors_docs)

datapoint = pca.transform(model.docvecs.vectors_docs)

plt.figure(figsize=(12,12))

label1 = ['red', 'pink', 'lightgreen', 'lightblue', 'cyan']
color = [label1[i] for i in labels]

plt.scatter(datapoint[:, 0], datapoint[:, 1], c=color)

centroids = kmeans_model.cluster_centers_
centroidpoint = pca.transform(centroids)

plt.scatter(centroidpoint[:, 0], centroidpoint[:, 1], marker='^', s=150, c='black')

plt.show()

输出:

在此处输入图像描述

我的数据集有一个标签列,其中每个文档都有一个标签(0、1、2、3 或 4 类)。我想检查这个聚类是否等于那些标签。我的意思是,例如,我想检查标记为 1 类的文档是否按 k-means 与来自同一类的其他文档进行分组。所以我想为每个班级使用不同的符号,例如,在这个情节中,所有文档都表示为点,我可以为每个班级使用不同的符号来绘制情节吗?这是检查这个的好方法吗?(视觉上)

另外,我怎么能检查这个的准确性?查看这 1000 个文档中有多少与我的数据集中具有相同值的其他文档聚集在一起(列:df['Classes'])

标签: pythonmatplotlibcluster-analysisk-meansgensim

解决方案


推荐阅读