Kmean聚类clus中的顶级术语

2024-05-11 14:38:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python-Kmean聚类算法对集群文档进行聚类。我创建了一个术语文档矩阵

   from sklearn.feature_extraction.text import TfidfVectorizer
   from sklearn.cluster import KMeans
   vectorizer = TfidfVectorizer(tokenizer=tokenize, encoding='latin-1',
                          stop_words='english')
    X = vectorizer.fit_transform(token_dict.values())

然后我使用以下代码应用Kmean集群

^{pr2}$

我的下一个任务是查看每个集群中的顶级术语,在googole上搜索表明很多人都使用了km.集群中心_.argsort()[:,::-1]用于使用以下代码查找群集中的顶级项:

 print("Top terms per cluster:")
 order_centroids = km.cluster_centers_.argsort()[:, ::-1]
 terms = vectorizer.get_feature_names()
 for i in range(true_k):
     print("Cluster %d:" % i, end='')
     for ind in order_centroids[i, :10]:
         print(' %s' % terms[ind], end='')
         print()

现在我的问题是我的理解集群中心返回簇中心的坐标,因此,例如,如果有100个特征和3个簇,它将返回一个由3行和100列组成的矩阵,表示每个簇的质心。我想了解在上面的代码中如何使用它来确定集群中的顶级术语。 谢谢你的评论 纳迪姆


Tags: 代码from文档集群矩阵聚类sklearn中心
1条回答
网友
1楼 · 发布于 2024-05-11 14:38:39

你对星团中心的形状和意义是正确的。因为您使用的是Tf Idf vectorizer,所以您的“特性”是给定文档中的单词(每个文档都是它自己的向量)。因此,在对文档向量进行聚类时,质心的每个“特征”都表示该词与它的相关性。”单词“(在词汇表中)=“特征”(在向量空间中)=“列”(在质心矩阵中)

get_feature_names调用获取列索引到它所代表的单词的映射(因此从文档中可以看出。。。如果这没有如预期的那样工作,只需反转vocabulary_矩阵以得到相同的结果)。在

然后.argsort()[:, ::-1]行将每个质心转换成一个排序(降序)的列表,该列表中最“相关”(高度值)的列,因此是最相关的单词(因为words=columns)。在

剩下的代码只是打印,我相信这不需要任何解释。代码真正要做的就是将每个质心按最有价值的特征/单词按降序排序,然后将这些列映射回其原始单词并打印出来。在

相关问题 更多 >