Печать топ терминов на кластер в AffinityPropagation в Sklearn - PullRequest
0 голосов
/ 14 декабря 2018

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

Нет очевидного эквивалента.

Вы можете сравнить центры кластеров самостоятельно.Это просто и должно работать нормально, но центр не играет особой роли в кластеризации точек доступа.

Или вы можете посмотреть на представителя кластера, что имеет больше смысла с точки зрения точки доступа.Но так как это единый документ, и он на самом деле не даст вам количественную информацию о важности терминов (но на самом деле это не делает k-означает ...), вам нужно получить вектор для индекса , которыйу вас так далеко.

...