Scikit learn 在Sklearn中按AffinityPropagation中的每个群集打印顶级术语

Scikit learn 在Sklearn中按AffinityPropagation中的每个群集打印顶级术语,scikit-learn,cluster-analysis,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.lab

对于一些文本聚类,我有一个非常简单的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不同。

没有明显的等价物

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


或者您可以查看集群代表,这在AP中更有意义。但是,由于这是一个单独的文档,实际上不会给您关于术语重要性的定量信息(但实际上,k-means不是…),因此您需要获取到目前为止的索引向量。

affprop.cluster\u centers\u index\u1xn vector的形状是什么?其中n是簇的数量。i、 e.[0 1 2 3]