在python中设置svd算法的维度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中设置svd算法的维度相关的知识,希望对你有一定的参考价值。
svd公式:A ≈ UΣV*
我使用numpy.linalg.svd来运行svd算法。我想设置矩阵的维度。
例如:A=3*5
维度,运行numpy.linalg.svd,U=3*3
维度,Σ=3*1
维度,V*=5*5
维度。
我需要设置像U=3*64
维度,V*=64*5
维度这样的特定维度。但似乎没有可选的维度参数可以在numpy.linalg.svd中设置。
答案
如果A
是3 x 5
矩阵,那么它的排名最多为3.因此A
的SVD包含最多3个奇异值。请注意,在上面的示例中,奇异值存储为向量而不是对角矩阵。通常这意味着您可以在底部用零填充矩阵。由于完整的S矩阵在对角线上包含3个值,然后是其余的0(在您的情况下,它将是64x64,具有3个非零值),V的底行和U的右行根本不会相互作用,并且可以设置你想要的任何东西。
请记住,这不再是A的SVD,而是矩阵的浓缩SVD增加了大量的0。
以上是关于在python中设置svd算法的维度的主要内容,如果未能解决你的问题,请参考以下文章
主成分分析法(PCA)(含SVD奇异值分解)等降维(dimensionality reduction)算法-sklearn