【问题标题】:How to identify Cluster labels in kmeans scikit learn如何在kmeans scikit learn中识别集群标签
【发布时间】:2015-04-05 08:22:54
【问题描述】:

我正在学习 python scikit。 这里给出的例子 显示每个集群中出现次数最多的单词,而不是集群名称。

http://scikit-learn.org/stable/auto_examples/document_clustering.html

我发现 km 对象有“km.label”,其中列出了质心 id,即数字。

我有两个问题

1. How do I generate the cluster labels?
2. How to identify the members of the clusters for further processing.

我具备 k-means 的工作知识并了解 tf-ids 概念。

【问题讨论】:

  • 我遇到了同样的问题。假设您有一个由 38 个观测值(行)和 5 个特征(列)组成的数据集。您需要 19 个集群。例如,在 kmeans 聚类之后,您如何知道观察 24 (row=24) 属于聚类 5?

标签: python machine-learning scikit-learn cluster-analysis k-means


【解决方案1】:

这很简单

我的环境: scikit-learn 版本 '0.20.0'

只需使用属性.labels_,如文档中所示:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

from sklearn.cluster import KMeans
import numpy as np

工作示例:

x1 = [[1],[1],[2],[2],[2],[3],[3],[7],[7],[7]]
x2 = [[1],[1],[2],[2],[2],[3],[3],[7],[7],[7]]

X_2D = np.concatenate((x1,x2),axis=1)

kmeans = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=0)
labels = kmeans.fit(X_2D)

print(labels.labels_)

输出:

[2 2 3 3 3 0 0 1 1 1]

如您所见,我们有 4 个簇,并且 X_2D 数组中的每个数据示例都被相应地分配了一个标签。

【讨论】:

    【解决方案2】:
    1. 如何生成集群标签?

    我不确定你的意思。除了集群 1、集群 2、...、集群 n 之外,您没有集群标签。这就是为什么它被称为无监督学习,因为没有标签。

    你的意思是你真的有标签,你想看看聚类算法是否碰巧根据你的标签对数据进行聚类?

    在这种情况下,您链接到的文档提供了一个示例:

    print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels, km.labels_))
    print("Completeness: %0.3f" % metrics.completeness_score(labels, km.labels_))
    print("V-measure: %0.3f" % metrics.v_measure_score(labels, km.labels_))
    
    1. 如何识别集群成员以进行进一步处理。

    请参阅documentation for KMeans。特别是predict 方法:

    预测(X)

    参数: X : {array-like, sparse matrix}, shape = [n_samples, n_features] 要预测的新数据。

    返回:
    标签:数组,形状 [n_samples,] 每个样本所属簇的索引。

    如果您不想预测新事物,km.labels_ 应该对训练数据进行预测。

    【讨论】:

    • 我正面临一个相关问题。我试图在我的标签和 km.labels_ 之间得到一个混淆矩阵。在这里,我的标签是字符串,km.labels_ 是整数。所以它给出了ValueError: Mix of label input types (string and number)。有没有办法解决这个问题?
    猜你喜欢
    • 2020-06-22
    • 2017-04-15
    • 2014-05-11
    • 2015-02-20
    • 2015-02-13
    • 2016-07-20
    • 2017-11-25
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多