打印群集中的主要功能(python)

时间:2016-04-07 18:18:31

标签: python scikit-learn cluster-analysis

我有一个mxn矩阵,有m个特征和n个样本。矩阵称为term_individual。使用scikitlearn完成聚类:

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 个答案:

答案 0 :(得分: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_individualY作为列表,通知每个样本属于哪个群集,例如像这样:[0, 0, 1, 1, 0, 3, 2, 2, 3, 0, ...]其中Y的长度为n