【问题标题】:Print top terms per cluster in AffinityPropagation in Sklearn在 Sklearn 中的 AffinityPropagation 中打印每个集群的顶级术语
【发布时间】:2019-05-15 13:07:04
【问题描述】:

我有非常简单的 AffinityPropagation 模型函数用于一些文本聚类:

def fit_affprop(X, damping=0.5):
affprop = AffinityPropagation(affinity='euclidean', damping=damping)
affprop.fit_predict(X)
clustering = collections.defaultdict(list)
for idx, label in enumerate(affprop.labels_):
    clustering[label].append(idx)
terms = vec.get_feature_names()
print(terms)
print(affprop.cluster_centers_indices_)

问题是,我无法弄清楚,如何打印出每个集群的热门词?我已经尝试修改我对 k-means 的方法:

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

argsort 会出错,因为聚类中心的形式与 k-means 不同。

【问题讨论】:

  • affprop.cluster_centers_indices_的形状是什么?
  • 1xn 向量,其中 n 是簇的数量。即 [0 1 2 3]

标签: scikit-learn cluster-analysis


【解决方案1】:

没有明显的等价物。

您可以自己比较集群中心。这很简单,应该可以正常工作,但中心在 AP 集群中没有任何特殊作用。

或者您可以查看集群代表,这对 AP 来说更有意义。但由于这是一个单独的文档,实际上不会为您提供有关术语重要性的定量信息(但实际上,k-means 不是...)您需要获取 index 的向量到目前为止。

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 2019-12-09
    • 1970-01-01
    • 2016-06-24
    • 2017-03-24
    • 2018-05-07
    • 2022-06-28
    • 2018-11-12
    • 2020-07-19
    相关资源
    最近更新 更多