因此,我目前正在从事一个涉及使用主成分分析(PCA)的项目,并且我试图随时进行学习。幸运的是,Python有一个来自scikitlearn.decomposition的非常方便的模块,该模块似乎可以为您完成大部分工作。在我真正开始使用它之前,我正在尝试弄清楚它在做什么。
我一直在测试的数据框如下所示:
0 1
0 1 2
1 3 1
2 4 6
3 5 3
当我调用PCA.fit()然后查看组件时,我得到:
array([[ 0.5172843 , 0.85581362],
[ 0.85581362, -0.5172843 ]])
根据我对PCA的有限了解,我有点了解如何进行计算,但是我迷失的地方是当我调用PCA.transform时。这是它给我的输出:
array([[-2.0197033 , -1.40829634],
[-1.84094831, 0.8206152 ],
[ 2.95540408, -0.9099927 ],
[ 0.90524753, 1.49767383]])
有人可能会引导我了解如何将原始数据帧和组件转换为新数组吗?我希望能够了解它所做的确切计算,以便在扩展时可以更好地了解正在发生的事情。谢谢!
参考方案
当您进行拟合时,PCA将计算一些向量,您可以将向量投影到这些向量上,以减小数据的维数。由于数据的每一行都是二维的,因此最多可以将2个向量投影到数据上,并且每个向量都是二维的。 PCA.components_的每一行都是一个向量,可以将事物投影到该向量上,并且其大小与训练数据中的列