所以我可以使用 linalg.eig 或 linalg.svd 来计算 PCA。当它们被输入相同的数据时(我目前正在使用 Iris 数据集),每个都返回不同的主成分/特征向量和特征值。
看这里或任何其他将 PCA 应用于虹膜数据集的教程,我会发现特征值是[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]
。另一页说(“一个组件解释的变化比例就是它的特征值除以特征值之和。”)
由于每个维度解释的方差应该是恒定的(我认为),因此这些比例是错误的。所以,如果我使用 的返回值svd()
,这是所有教程中使用的值,我可以从每个维度获得正确的变化百分比,但我想知道为什么eig
不能这样使用返回的值。
我假设返回的结果仍然是投影变量的有效方法,那么有没有办法转换它们,以便我可以得到每个变量解释的正确比例的方差?换句话说,我可以使用该eig
方法并且仍然具有每个变量的方差比例吗?此外,这种映射是否只能在特征值中完成,以便我可以同时拥有真实的特征值和归一化的特征值?
对不起,很长的文章顺便说一句。这是一个(::)
已经走到这一步的。假设你不只是阅读这一行。