在 scikit-learn 网站上有一个将 k-means 应用于文本挖掘的示例。感兴趣的摘录如下:
if opts.n_components:
original_space_centroids = svd.inverse_transform(km.cluster_centers_)
order_centroids = original_space_centroids.argsort()[:, ::-1]
else:
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_。每个术语实际上是一个维度,因此每个术语的集群中心值是每个集群在术语维度中的“位置”。这些值是否已排序,因为每个术语维度中特定术语的较高值代表该术语代表集群的“强度”?如果是这样,请解释为什么会这样。
其次,该算法提供了在聚类之前对术语文档矩阵执行 LSA 的选项。我可以假设这有助于通过维度的正交性来提高每个集群的唯一性吗?或者还有其他的东西吗?在聚类之前执行 SVD 是典型的吗?
提前致谢!