我正在阅读这篇文章Recovering features names of explained_variance_ratio_ in PCA with sklearn,我想了解以下代码行的输出:
pd.DataFrame(pca.components_, columns=subset.columns)
首先,我认为sklearn的pca组件将是每个特征解释了多少差异(我猜这就是pca的解释,对吧?)。然而,我认为这实际上是错误的,解释的方差是由pca给出的
另外,用上面的脚本构造的数据帧的输出对我来说非常混乱,因为它有几行,而且还有负数
此外,上面构造的数据帧与以下绘图有何关系:
plt.bar(range(pca.explained_variance_), pca.explained_variance_)
我真的对主成分分析和方差感到困惑
如果需要一些示例,我们可以使用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)
在PCA中,分量(在
sklearn
,在components_
)是原始特征之间的线性组合,增强了它们的方差。因此,它们是组合输入特征的向量,以最大化方差在
sklearn
中,如所引用的here,components_
按其解释的方差(explained_variance_
)从最高值到最低值的顺序呈现。因此,components_
的i-th向量具有explained_variance_
的i-th值关于PCA的有用链接:https://online.stat.psu.edu/stat505/lesson/11
相关问题 更多 >
编程相关推荐