gpt4 book ai didi

python - PCA中特征重要性的度量

转载 作者:行者123 更新时间:2023-12-04 04:30:21 27 4
gpt4 key购买 nike

我正在做主成分分析 (PCA),我想找出对结果贡献最大的特征。
我的直觉是总结特征对单个组件的单个贡献的所有绝对值。

import numpy as np
from sklearn.decomposition import PCA

X = np.array([[-1, -1, 4, 1], [-2, -1, 4, 2], [-3, -2, 4, 3], [1, 1, 4, 4], [2, 1, 4, 5], [3, 2, 4, 6]])
pca = PCA(n_components=0.95, whiten=True, svd_solver='full').fit(X)
pca.components_
array([[ 0.71417303,  0.46711713,  0.        ,  0.52130459],
[-0.46602418, -0.23839061, -0. , 0.85205128]])
np.sum(np.abs(pca.components_), axis=0)
array([1.18019721, 0.70550774, 0.        , 1.37335586])
在我看来,这可以衡量每个原始特征的重要性。请注意,第三个特征的重要性为零,因为我有意创建了一个只是一个常量值的列。
PCA 是否有更好的“重要性衡量标准”?

最佳答案

PCA 的重要性度量在 explained_variance_ratio_ .此数组提供由每个组件解释的方差百分比。它按组件的重要性按降序排序,并在使用所有组件时总和为 1,或高于请求阈值的最小可能值。在您的示例中,您将阈值设置为 95%(应解释的方差),因此数组总和将为 0.9949522861608583,因为第一个分量解释了 92.021143% 和第二个 7.474085% 的方差,因此您收到了 2 个分量。components_是存储 的数组路线 特征空间中的最大方差。它的尺寸是 n_components_来自 n_features_ .这是您在应用 transform() 时乘以数据点的值以获得数据的降维投影。
更新
为了得到原始特征对每个主成分的贡献百分比,你只需要归一化components_ ,因为它们设置了原始向量对投影的贡献量。

r = np.abs(pca.components_.T)
r/r.sum(axis=0)

array([[0.41946155, 0.29941172],
[0.27435603, 0.15316146],
[0. , 0. ],
[0.30618242, 0.54742682]])
如您所见,第三个功能对 PC 没有贡献。
如果您需要原始特征对解释方差的总贡献,则需要考虑每个 PC 贡献(即 explained_variance_ratio_ ):
ev = np.abs(pca.components_.T).dot(pca.explained_variance_ratio_)
ttl_ev = pca.explained_variance_ratio_.sum()*ev/ev.sum()
print(ttl_ev)

[0.40908847 0.26463667 0. 0.32122715]

关于python - PCA中特征重要性的度量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67199869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com