2016-04-07 2 views
2

У меня есть матрица mxn с m функциями и n образцами. Матрица называется term_individual. Кластеризация выполняется с использованием scikitlearn:Печать основных функций в кластерах (python)

from sklearn.cluster import KMeans 

kmeans = KMeans(n_clusters=n_clusters) 
kmeans.fit(term_individual.T) 
centroids = kmeans.cluster_centers_.squeeze() 
labels = kmeans.labels_ 

Каждый образец представляет собой вектор, заполненный положительными целыми числами. Если i-й компонент выборки равен n, это означает, что i-я функция присутствует n раз в этом образце.

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

Я ценю вашу помощь.

ответ

1

Похоже, что вопрос, который вы задаете, является наиболее важным для каждого кластера. По существу, вы можете просто начать оценки zscore среднего значения каждого признака в каждом кластере:

def cluster_feature_importance(X, Y, feature_importances): 
    N, M = X.shape 
    X = scale(X) 

    out = {} 
    for c in set(Y): 
     out[c] = dict(
      zip(range(N), np.mean(X[Y==c, :], axis=0)) 
     ) 

    return out 

Здесь X является ваша матрица term_individual и Y как список информированием, какой кластер каждый образец принадлежит, например, примерно так: [0, 0, 1, 1, 0, 3, 2, 2, 3, 0, ...] где Y is n long.

+0

Чтобы понять, насколько я понимаю, [c] - это словарь ключей, являющийся индексами функций, а значениями являются z-баллы каждой функции соответственно. Наиболее важными функциями будут функции с самым высоким значением z (или самым низким?)? Правильно? –

+1

Закрыть. out [c] - словарь ключей для функций и значений, которые являются стандартизованными средними значениями признаков в кластере c. Идея состоит в том, что, поскольку мы сталкиваемся с проблемой стандартизации (т. Е. Zscoring), то если среднее значение функции для точек в определенном кластере отклоняется от 0 (> ± 1 std), то это, вероятно, означает, что это важно для этот кластер. –

Смежные вопросы