У меня есть очень простая функция модели 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-средние.