如何识别kmeans scikit中的集群标签

时间:2015-02-05 13:00:33

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

我正在学习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-id概念。

2 个答案:

答案 0 :(得分:4)

  
      
  1. 如何生成群集标签?
  2.   

我不确定你的意思。除了群集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. 如何识别群集成员以进行进一步处理。
  2.   

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

  
    

预测(X)

         

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

         

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

  

如果您不想预测新内容,km.labels_应该对培训数据进行预测。

答案 1 :(得分:1)

哦,很简单

我的环境: scikit学习版本'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数组中的每个数据示例都相应地分配了一个标签。