gpt4 book ai didi

python - numpy SVD 给出错误的值?

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:59 24 4
gpt4 key购买 nike

我正在尝试习惯使用 numpy 进行奇异值分解。我决定根据示例在矩阵上执行 SVD 以了解其工作原理。 I am following this pdf ,其中 A = [[3, 2, 2], [2, 3, -2]]。然而,当我运行 svd 时,我得到的矩阵 U 和 V 与 pdf 中提供的不同。它是相同的矩阵,只是符号被翻转了。现在,由于矩阵都是线性运算符,并且两者的符号都被翻转了,从技术上讲它仍然是正确的,所以翻转被抵消了。但为什么会这样呢?

最佳答案

请记住,UV特征向量。缩放一个特征向量仍然是一个特征向量,但只要你得到你在 PDF 中得到的解的一些线性倍数,它是完全可以接受的。如果特征值 相同,您就知道实现是正确的。从您没有对特征值发表评论的帖子来看,我假设它们是正确的。特征值需要相同,但特征向量可以不同。

在您的情况下,缩放是由 -1 完成的,它们仍然是相同特征值的有效特征向量。至于特征向量符号不同的原因,很可能是SVD的计算方式。找到实际的左右特征向量在计算上是高难度的,因此完成了一些提示和技巧以得出相同的解决方案,这可能意味着特征向量的规模与您预期的不同。

最后,我想向您推荐这篇经过交叉验证的帖子,该帖子讨论了计算 SVD 的不同算法。 numpy.svd 检查输入矩阵的属性并选择合适的正确算法。

https://stats.stackexchange.com/questions/66034/what-are-efficient-algorithms-to-compute-singular-value-decomposition-svd

关于python - numpy SVD 给出错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49453600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com