我正在使用scikit-learn的PCA,并试图选择最小的组件数量,以满足1-(从1到k的Sii之和)/(从1到n的Sjj之和) <= 0.01的条件,其中S是SVD的对角矩阵,以便保留99%的方差。
- scikit-learn是否有函数可以根据给定的保留方差百分比阈值返回最小的组件数量?
- 是否有更有效的方法来确定n_component的值?
谢谢。
回答:
只需将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指定的百分比