python - 如何识别 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'])
解决方案
推荐阅读
- javascript - Rxjs 使用 concatMap 进行顺序调用
- java - 生成没有连续 1 的所有二进制字符串的代码的时间复杂度和空间复杂度
- postgresql - 将数据从 csv 文件导入 PostGRESQL
- linux - 尝试使用 lex 和 yacc 运行解析程序时出错
- clickhouse - 无法通过运行运行脚本在 Clickhouse 中进行集成测试
- html - 属性用 html `{{!! $html !!}`
- javascript - 检查 div 是否包含要在 jQuery 中添加类的文本
- node.js - 如何在 Rust 的 wasm_bindgen 函数中发出 HTTP 请求?
- python - 如何从 TextCtrl 派生 wxPython 自定义控件
- typescript - 深度合并两个嵌套对象的正确类型(默认配置和自定义)