Python pca()和n_分量,线性代数

Python pca()和n_分量,线性代数,python,scikit-learn,data-science,pca,data-analysis,Python,Scikit Learn,Data Science,Pca,Data Analysis,假设我想在使用sklearn在Python3中进行PCA时找到最佳组件数 我会通过迭代一些n_组件来实现这一点,并在验证模型时计算每个值的总绝对预测误差 我的问题是,将n_components参数传递到PCA并从那里开始,与不传递它并仅使用它得到的隐式最大值中的第一(i)个分量相比,有什么区别 我的线性代数有点不稳定,但如果我回忆正确,在这两种情况下,单个向量应该是相同的,按升序排列,并提供相同数量的解释方差 很抱歉,我没有提供任何代码,也没有亲自编写这两个场景来测试它们,但我在长途火车上,我的

假设我想在使用sklearn在Python3中进行PCA时找到最佳组件数

我会通过迭代一些
n_组件
来实现这一点,并在验证模型时计算每个值的总绝对预测误差

我的问题是,将
n_components
参数传递到
PCA
并从那里开始,与不传递它并仅使用它得到的隐式最大值中的第一(i)个分量相比,有什么区别

我的线性代数有点不稳定,但如果我回忆正确,在这两种情况下,单个向量应该是相同的,按升序排列,并提供相同数量的解释方差


很抱歉,我没有提供任何代码,也没有亲自编写这两个场景来测试它们,但我在长途火车上,我的笔记本电脑电池在测试过程中用完了。现在我被好奇心所困扰。

你对PCA的记忆是正确的。包括的每个部件的奇异值相同

考虑下面的思维实验。 您有少量功能。拟合完整的PCA并迭代以找到为估计器/分类器创建最佳变换的
n_分量
的值是微不足道的。 现在,您的数据中有1000个功能。10,000? 100,000? 1,000,000? 看到我要去哪里了吗?对这些数据进行完整的主成分分析既繁琐又昂贵。这是在迭代找到最佳转换之前

一种常见做法是设置主成分分析来解释90%的方差(
n_分量-.9
),这有助于避免这种情况,同时仍然提供有价值的输出

另一个选项是使用并输入要测试的
n_组件
的值列表。请注意,此方法还要求您使用构造一个对象,该对象将在网格中给定点的训练数据上同时适合您的PCA和估计器/分类器

作为旁白,我将指出,PCA并不总是降维的最佳选择,因为在某些情况下,低方差主成分具有较高的预测价值。现有的一些交叉验证问题很好地涵盖了这一点。及