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% 的方差。
- scikit learn 是否具有 returns 给定方差的最小组件保留百分比阈值的功能?
- 有没有更有效的方法来得出 n_component?
谢谢。
只需将n_components
设置为float
,它将作为解释方差的下限。
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")
我正在使用 scikit learn PCA 并尝试选择满足 1-(sum i 1 to k Sii)/(sum j 1 to n Sjj) <= 0.01 的最小组件数,其中 S 是 svd 对角线矩阵,以便保留 99% 的方差。
- scikit learn 是否具有 returns 给定方差的最小组件保留百分比阈值的功能?
- 有没有更有效的方法来得出 n_component?
谢谢。
只需将n_components
设置为float
,它将作为解释方差的下限。
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")