在Sklearn的AffinityPropagation中打印每个群集的主要术语

时间:2018-12-14 09:21:35

标签: scikit-learn cluster-analysis

对于某些文本聚类,我有非常简单的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均值的方法:

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均值不同。

1 个答案:

答案 0 :(得分:0)

没有明显的等同物。

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

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