PCA 解释的方差分析

问题描述 投票:0回答:2

我对 PCA 很陌生。 我的模型有 11 个 X 变量。这些是 X 变量标签

x = ['Day','Month', 'Year', 'Rolling Average','Holiday Effect', 'Day of the Week', 'Week of the Year', 'Weekend Effect', 'Last Day of the Month', "Quarter" ]

这是我根据解释的方差生成的图表。 x 轴为主成分。

[  3.47567089e-01   1.72406623e-01   1.68663799e-01   8.86739892e-02
   4.06427375e-02   2.75054035e-02   2.26578769e-02   5.72892368e-03
   2.49272688e-03   6.37160140e-05]

我需要知道我是否有很好的功能选择。我怎样才能知道哪些功能贡献最大。

from sklearn import decomposition
pca = decomposition.PCA()
pca.fit(X_norm)
scores = pca.explained_variance_
python machine-learning pca
2个回答
0
投票

虽然我不知道数据集,但我建议您在使用 PCA 之前缩放特征(方差将沿轴最大化)。我认为 X_norm 指的是您代码中的那个。

通过使用 PCA,我们的目标是降低维度。为此,我们将从一个包含您案例中所有 X 变量的特征空间开始,并最终得到该空间的投影,该空间通常是不同的特征(子)空间。

在实践中,当特征之间存在相关性时,PCA 可以帮助您将这种相关性投影到更小的维度。

想一想,如果我桌上放着一张纸,上面满是点,我是否需要第三维来表示该数据集?可能不是,因为所有点都在纸上并且可以在 2D 空间中表示。

当您尝试决定从新特征空间中使用多少个主成分时,您可以查看解释方差,它会告诉您每个主成分有多少信息。

当我查看数据中的主成分时,我发现约 85% 的方差可归因于前 6 个主成分。

您还可以设置n_components。例如,如果您使用 n_components=2,那么转换后的数据集将具有 2 个特征。


0
投票
explained_variance = pca.explained_variance_ratio_
cumulative_variance = 0
min_components = 0
for i, variance in enumerate(explained_variance):
    cumulative_variance += variance
    if cumulative_variance > 0.9:
        min_components = i + 1
        break
print(f"minimal number of components for explained variance > 0.9: {min_components}")
© www.soinside.com 2019 - 2024. All rights reserved.