我应该如何解释 pca.components_ 的输出

Posted

技术标签:

【中文标题】我应该如何解释 pca.components_ 的输出【英文标题】:How should I interpret the output of pca.components_ 【发布时间】:2021-07-06 05:36:48 【问题描述】:

我正在阅读这篇文章Recovering features names of explained_variance_ratio_ in PCA with sklearn,我想了解以下代码行的输出:

pd.DataFrame(pca.components_, columns=subset.columns)

首先,我认为来自 sklearn 的 pca 组件将是每个特征解释了多少方差(我猜这是对 PCA 的解释,对吧?)。但是,我认为这实际上是错误的,解释的方差由 pca.explained_variance 给出。

另外,用上面的脚本构建的数据框的输出让我很困惑,因为它有几行,而且还有负数。

此外,上面构建的数据框与下图有何关系:

plt.bar(range(pca.explained_variance_), pca.explained_variance_)

我真的对 PCA 组件和方差感到困惑。

如果需要一些示例,我们可以使用 iris 数据集构建 PCA。这是我到目前为止所做的:

subset = iris.iloc[:, 1:5]
scaler = StandardScaler()
pca = PCA()

pipe = make_pipeline(scaler, pca)
pipe.fit(subset)

# Plot the explained variances
features = range(pca.n_components_)
_ = plt.bar(features, pca.explained_variance_)

# Dump components relations with features:
pd.DataFrame(pca.components_, columns=subset.columns)

【问题讨论】:

【参考方案1】:

在 PCA 中,分量(在sklearncomponents_ 中)是原始特征之间的线性组合,从而增强了它们的方差。因此,它们是组合输入特征的向量,以最大化方差。

sklearn 中,如here 所引用,components_ 按其解释方差 (explained_variance_) 的顺序呈现,从最高值到最低值。所以,components_i-th 向量的 i-th 值为 explained_variance_

关于 PCA 的有用链接:https://online.stat.psu.edu/stat505/lesson/11

【讨论】:

以上是关于我应该如何解释 pca.components_ 的输出的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn 内核 PCA 解释方差

如何在 3D 绘图(熊猫)中指定 kmeans 簇的颜色?

数据预处理PCA,标准化

手动 PCA 逆变换

机器学习 PCA与梯度上升法 (下)

Sklearn PCA:列车和测试的组件数量不同