代码之家  ›  专栏  ›  技术社区  ›  Hagbard

scikit-learn-pca方法中百分比值的解释

  •  2
  • Hagbard  · 技术社区  · 8 年前

    在scikit learn中,有一个方法叫做 PCA . 此方法采用百分比参数。 This site 如下解释此参数:

    注意下面的代码中有.95表示组件数参数。 这意味着scikit learn选择最小的主体数量 保留95%方差的分量。

    > from sklearn.decomposition import PCA
    > # Make an instance of the Model 
    > pca = PCA(.95)
    

    我对这个解释的解释有点不清楚。假设主成分分析的输出如下:

    • PC1解释了70%的完全方差
    • PC2解释了15%的完全方差
    • PC3解释了10%的完全方差
    • PC4解释了4%的完全方差
    • PC5解释了1%的完全方差

    声明pca(0.71)会返回pc1和pc5(因为它们都解释了71%的方差)还是返回pc1和pc2?如果我想检索0.5%的方差,即声明pca(0.005)将返回哪台pc,会发生什么情况?

    2 回复  |  直到 8 年前
        1
  •  2
  •   desertnaut SKZI    8 年前

    你接触到一个更一般的观点,尽管在实践中一直使用,但很少明确提及,甚至在教程和介绍性的说明中也很少提及。虽然这样的问题从来没有发生在我身上,但从初学者的角度来看,这是完全有意义的(初学者通常不受某些惯例的约束,更有经验的实践者认为这是理所当然的,而且往往他们甚至没有注意到……)。

    通常,当我们选择主成分的数量时(例如,对于维度缩减、可视化等),我们选择一个数字 k ,它的意思是“从PC1开始并继续” 顺序地 ,直至(包括)PCK”。这就是原则,比如说, preProcess 功能 caret 在r中打包(可以说是在执行类似任务的所有函数后面,在任何软件包中)。

    换言之,据我所知,至少在你所描述的情况下,我们从不选择个人电脑 采摘樱桃 (例如,以PC2、PC4和PC5为例)。相反,我们总是选择 k < n (这里) n=5 ,然后我们继续 首先 K PC,即从PC1开始。

        2
  •  1
  •   akilat90    8 年前

    这个 documentation 下面是关于 0 < n_components < 1 :

    如果 0<n_组件<1 svd_solver='满',

    选择号码 使所需的差异量 explained大于n_组件指定的百分比。

    如果你说得像这样的话就更清楚了:

    如果 0<n_组件<1 svd_solver='满',

    从排序列表中选择最小组件数(降序) 根据各自解释的方差值,使 需要解释的方差大于n_分量指定的百分比

    这样就不会有歧义了。

    随后:

    PCA(0.71) 会返回PC1和PC2

    PCA(0.005) -(不太可能的情况)将返回PC1