我应该如何解释 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 中,分量(在sklearn
、components_
中)是原始特征之间的线性组合,从而增强了它们的方差。因此,它们是组合输入特征的向量,以最大化方差。
在sklearn
中,如here 所引用,components_
按其解释方差 (explained_variance_
) 的顺序呈现,从最高值到最低值。所以,components_
的 i-th 向量的 i-th 值为 explained_variance_
。
关于 PCA 的有用链接:https://online.stat.psu.edu/stat505/lesson/11
【讨论】:
以上是关于我应该如何解释 pca.components_ 的输出的主要内容,如果未能解决你的问题,请参考以下文章