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

时间:2015-11-03 21:06:53

标签: machine-learning scikit-learn pca

我正在使用scikit学习PCA并尝试选择满足1-(sum i 1到k Sii)/(和j 1到n Sjj)的最小组件数< = 0.01其中S是svd对角矩阵,为了保留99%的差异。

  1. scikit learn是否具有返回给定方差保留%阈值的最小分量的函数?
  2. 有没有更有效的方法来提出n_component?
  3. 感谢。

2 个答案:

答案 0 :(得分:2)

只需将n_components设置为float,它就会被用作解释差异的下限。

来自scikit-learn documentation

  

n_components :int,None或string

     

要保留的组件数量。如果未设置n_components,则保留所有组件:   n_components == min(n_samples,n_features)   如果n_components =='mle',则Minka的MLE用于猜测维度如果0< n_components< 1,选择组件数量,使得需要解释的差异量大于n_components指定的百分比

答案 1 :(得分:0)

关于您的问题#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")