我正在使用scikit学习PCA并尝试选择满足1-(sum i 1到k Sii)/(和j 1到n Sjj)的最小组件数< = 0.01其中S是svd对角矩阵,为了保留99%的差异。
感谢。
答案 0 :(得分:2)
只需将n_components
设置为float
,它就会被用作解释差异的下限。
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")