【问题标题】:When doing a PCA analysis, how can we know which principal components were selected? [closed]在进行 PCA 分析时,我们如何知道选择了哪些主成分? [关闭]
【发布时间】:2021-09-20 14:16:35
【问题描述】:

我从下面的链接中阅读了这篇文章。

https://towardsdatascience.com/principal-component-analysis-pca-with-scikit-learn-1e84a0c731b0

作者很好地描述了 PCA 分解的过程。我觉得我什么都懂,除了一件事。我们如何知道选择了哪些主成分,从而为最终提高我们的 ML 算法的性能保留?比如作者就是从这个开始的。

from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
df = pd.DataFrame(data=cancer.data, columns=cancer.feature_names)
df.head()

好的,我知道这些功能是什么。伟大的。然后所有的乐趣都发生了,我们最终得到了这个。

df_new = pd.DataFrame(X_pca_95, columns=['PC1','PC2','PC3','PC4','PC5','PC6','PC7','PC8','PC9','PC10'])
df_new['label'] = cancer.target
df_new

在我们开始的 30 个功能中,我们如何知道最后 10 列的组成?似乎必须有某种最后一步才能将df_new 映射到df

【问题讨论】:

  • 我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 machine-learning @ 中的介绍和注意事项987654325@.

标签: machine-learning pca


【解决方案1】:

要了解,您需要对 PCA 有更多了解。事实上,PCA 返回塑造整个向量空间的所有主成分,即特征协方差矩阵的特征值和特征向量。因此,您可以根据其对应特征值的大小来选择特征向量。因此,您需要选择最大的特征值及其对应的特征向量。

现在,如果您查看 scikit learn 中的 PCA 方法的文档,您会发现一些有用的属性,如下所示:

components_ndarray of shape (n_components, n_features):特征空间中的主轴,表示数据中最大方差的方向。 组件按解释的方差_排序。

explained_variance_ratio_ ndarray of shape (n_components,) 每个选定组件解释的方差百分比。 如果未设置 n_components 则存储所有分量并且比率之和等于 1.0。

explained_variance_ratio_ 是一个非常有用的属性,您可以使用它来根据覆盖方差百分比的所需阈值选择主成分。例如,该数组中的取值为[0.4, 0.3, 0.2, 0.1]。如果我们取前三个分量,覆盖的方差是原始数据整个方差的90%

【讨论】:

  • 我想我明白了。感谢您的解释。所以,我的问题的答案是,我们最终无法获得那些原始特征名称。对吗?
  • @ASH 是对的。最后,您将在所选特征向量的空间中投影原始特征向量,而不是原始特征。
【解决方案2】:

几乎可以肯定,生成的 10 列都是由所有 30 个原始特征组成的。 PCA 对象有一个属性components_,它显示了根据原始特征定义主成分的系数。

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2013-03-28
    • 2015-07-29
    • 2020-01-28
    相关资源
    最近更新 更多