我正在学习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概念。
答案 0 :(得分:4)
- 如何生成群集标签?
醇>
我不确定你的意思。除了群集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_))
- 如何识别群集成员以进行进一步处理。
醇>
请参阅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数组中的每个数据示例都相应地分配了一个标签。