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

在scikit-learn中,有一个叫做PCA的方法。这个方法接受一个百分比参数。这个网站对该参数的解释如下:

请注意下面的代码中,组件数量参数设置为.95。这意味着scikit-learn选择最小的主成分数量,使得保留了95%的方差。

> from sklearn.decomposition import PCA> # 创建模型实例 > pca = PCA(.95)

我对这个解释的理解有点模糊。假设PCA的输出如下:

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

那么,语句PCA(0.71)会返回PC1和PC5(因为它们解释了正好71%的方差),还是会返回PC1和PC2?如果我想获取0.5%的方差,即语句PCA(0.005)会返回哪个PC?


回答:

你提出了一个更普遍的问题,尽管在实践中经常使用,但很少在教程和介绍性文章中明确提到。这样的问题虽然我自己从未想过,但从初学者的角度来看是完全合理的(初学者通常不受一些惯例的约束,而这些惯例是更有经验的从业者认为理所当然的,他们甚至可能没有注意到这些惯例…)。

通常,当我们选择主成分的数量时(例如用于降维、可视化等),我们选择一个数字k,隐含的意思是从PC1开始,按顺序继续,直到(并包括)PCk。这是R语言中caret包的preProcess函数背后的原则(可以说也是所有执行类似任务的函数背后的原则,无论是在哪个软件包中)。

换句话说,至少据我所知,在你描述的情况下,我们从不通过挑选来选择PC’s(例如,选择PC2、PC4和PC5)。相反,我们总是选择一个k < n(这里n=5),然后我们继续取k个PC,即从PC1开始。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注