sklearn PCA - 计算为选择 k 保留的方差百分比

sklearn PCA - Calculate % of variance retained for choosing k

我正在使用 scikit learn PCA 并尝试选择满足 1-(sum i 1 to k Sii)/(sum j 1 to n Sjj) <= 0.01 的最小组件数,其中 S 是 svd 对角线矩阵,以便保留 99% 的方差。

  1. scikit learn 是否具有 returns 给定方差的最小组件保留百分比阈值的功能?
  2. 有没有更有效的方法来得出 n_component?

谢谢。

只需将n_components设置为float,它将作为解释方差的下限。

来自scikit-learn documentation

n_components : int, None or string

Number of components to keep. if n_components is not set all components are kept: n_components == min(n_samples, n_features) if n_components == ‘mle’, Minka’s MLE is used to guess the dimension if 0 < n_components < 1, select the number of components such that the amount of variance that needs to be explained is greater than the percentage specified by n_components

关于您的问题 #1 - 为给定方差保留百分比阈值获得最少数量的组件:

from sklearn.decomposition import PCA as sklearnPCA
sklearn_pca = sklearnPCA(n_components = 0.99, svd_solver ='full')

关于您的问题 #2 - 以下参数 - Minka 的最大似然估计 - 将猜测主成分的数量:

...
sklearn_pca = sklearnPCA(n_components = "mle", svd_solver ="full")