【问题标题】:Printing principal features in clusters (python)在集群中打印主要特征(python)
【发布时间】:2016-07-28 19:23:33
【问题描述】:

我有一个 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)。

感谢您的帮助。

【问题讨论】:

    标签: python scikit-learn cluster-analysis


    【解决方案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, ...] 其中Yn long。

    【讨论】:

    • 看看我是否理解 out[c] 是一个字典,键是特征的索引,值是每个特征的 z 分数。 z 分数最高(或最低?)的特征将是最重要的特征。对吗?
    • 关闭。 out[c] 是特征和值的键的字典,它们是集群 c 中特征的标准化平均值。这个想法是,由于我们经历了标准化(即 zscoring)的麻烦,那么如果特定集群中点的特征的平均值与 0(>±1 标准差)相差很大,那么这可能意味着它对那个集群。
    猜你喜欢
    • 2020-06-03
    • 2022-01-19
    • 2021-12-04
    • 2018-06-03
    • 2017-06-09
    • 1970-01-01
    • 2017-04-01
    • 2016-11-24
    • 2018-08-04
    相关资源
    最近更新 更多