【问题标题】:How to interpret Scikit-learn's PCA when n_components are None?当 n_components 为 None 时如何解释 Scikit-learn 的 PCA?
【发布时间】:2020-11-23 08:29:45
【问题描述】:

我对标题中提到的问题感到困惑。 n_components=None 是否意味着输入中没有进行任何转换,或者它已经转换到新的维度空间,而不是通常的“减少”(保留少数具有高特征值的组件)并保留所有新的合成特征? documentation 为我推荐前者:

因此,None 情况导致:n_components == min(n_samples, n_features) - 1

但这并不完全清楚,另外,如果这确实意味着保留所有组件,为什么这些组件的数量等于n_components == min(n_samples, n_features) - 1,为什么不等于n_features

但是,我找到了另一种选择(如果是 None,则放弃整个 PCA 步骤),我从未听说过在不省略一些特征向量的情况下应用 PCA...

【问题讨论】:

    标签: python scikit-learn pca dimensionality-reduction


    【解决方案1】:

    根据官方文档-

    如果 svd_solver == 'arpack',组件的数量必须严格小于 n_features 和 n_samples 的最小值。 因此, None 情况导致: n_components == min(n_samples, n_features) - 1

    所以它取决于用于特征向量的求解器的类型(可以通过参数设置)。

    如果 arpack :运行 SVD 被截断为 n_components 通过 scipy.sparse.linalg.svds 调用 ARPACK 求解器。它严格要求 0

    关于您关于删除整个 PCA 步骤的第二个查询,这完全取决于您要解决的问题。由于 PCA 组件按降序解释数据的变化(第一个组件解释最大方差,最后一个组件解释最小方差),因此对于特定任务来说,具有一些解释更多方差的特征可能很有用。

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 1970-01-01
      • 2014-05-15
      • 2015-08-17
      • 2014-06-26
      • 2019-03-05
      • 2014-06-11
      • 2016-10-22
      • 2014-10-01
      相关资源
      最近更新 更多