如何在kmeans scikit学习中识别集群标签

vij*_*555 6 python cluster-analysis machine-learning k-means scikit-learn

我正在学习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.
Run Code Online (Sandbox Code Playgroud)

我具有k均值的工作知识,并且了解tf-ids概念。

IVl*_*lad 5

  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_))
Run Code Online (Sandbox Code Playgroud)
  1. 如何识别集群成员以进行进一步处理。

请参阅KMeans文档。特别是该predict方法:

预测(X)

参数:X:{类似数组的稀疏矩阵},形状= [n_samples,n_features]要预测的新数据。

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

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


Arm*_*sis 5

哦,这很容易

我的环境: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
Run Code Online (Sandbox Code Playgroud)

工作示例:

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_)
Run Code Online (Sandbox Code Playgroud)

输出:

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

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