我正在使用Python K-Means聚类算法对文档进行聚类。我已经创建了一个词项-文档矩阵。
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聚类
km = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
y=km.fit(X)
我的下一个任务是查看每个簇中的热门词汇,通过搜索Google发现许多人使用km.cluster_centers_.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()
现在我的问题是,据我理解,km.cluster_centers_ 返回聚类中心的坐标,因此例如如果有100个特征和三个聚类,它将为我们返回一个3行100列的矩阵,表示每个聚类的质心。我希望了解如何在上述代码中使用它来确定聚类中的前几个词语。 谢谢,期待您的回复。 Nadeem
TfidfVectorizer
和KMeans
库来自哪里?如果您将此问题针对该软件包的专家,您可能会获得更好的回答。具体而言,这些信息可以放在标签中,以及问题本身和正文中。 - Andrew Jaffe