主成分分析中的方差百分比

2024-05-13 07:58:30 发布

您现在位置:Python中文网/ 问答频道 /正文

Picking up from where we left...

所以我可以使用linalg.eig或linalg.svd来计算主成分分析。每一个都返回不同的主成分/特征向量和特征值,当它们被输入相同的数据时(我目前正在使用Iris数据集)。

查看here或任何其他将PCA应用于Iris数据集的教程,我会发现特征值是[2.9108 0.9212 0.1474 0.0206]eig方法给了我一组不同的特征值/向量,我不介意,除了这些特征值,一旦求和,等于维数(4),可以用来找出每个分量对总方差的贡献。

linalg.eig返回的特征值,我不能这么做。例如,返回的值是[9206.53059607 314.10307292 12.03601935 3.53031167]。在这种情况下,方差的比例是[0.96542969 0.03293797 0.00126214 0.0003702]This other page说(“一个分量所解释的变化的比例只是它的特征值除以特征值之和。”)

因为每个维度解释的方差应该是恒定的(我认为),所以这些比例是错误的。所以,如果我使用svd()返回的值,这是所有教程中使用的值,我可以从每个维度获得正确的变化百分比,但我想知道为什么eig返回的值不能这样使用。

我假设返回的结果仍然是投影变量的有效方法,那么是否有方法对它们进行转换,以便得到每个变量解释的正确方差比例?换句话说,我是否可以使用eig方法,并且仍然拥有每个变量的方差比例?另外,这个映射可以只在特征值上做吗,这样我就可以同时得到实特征值和规范化特征值?

抱歉,顺便说一句,这是一篇(::)的文章。假设你不只是读了这句话。


Tags: 数据方法fromiris教程picking比例分量