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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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