版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41455420/article/details/79859968
SVD 奇异值分解
SVD 奇异值分解提供了一个矩阵拆分成简单有意义的几块的一种方法。SVD可以用于图像压缩,去噪,也是 PCA 的数学基础。
1、主要内容
Python 实现 SVD
>>>A=mat([[1,2,3],[4,5,6]])
>>> from numpy import linalg as la
>>> U,sigma,VT=la.svd(A)
>>> print U
matrix([[-0.3863177 , -0.92236578],
[-0.92236578, 0.3863177 ]])
>>> print sigma
array([ 9.508032 , 0.77286964])
>>> ptint VT
matrix([[-0.42866713, -0.56630692, -0.7039467 ],
[ 0.80596391, 0.11238241, -0.58119908],
[ 0.40824829, -0.81649658, 0.40824829]])
有一点需要注意,sigma 本来应该跟 A 矩阵的大小 2*3 一样,但 linalg.svd()只返回了一个行向量的 sigma,并且只有 2 个奇异值(本来应该有 3 个),这是因为第三个奇异值为 0,舍弃掉了。之所以这样做,是因为当 A 是非常大的矩阵时,只返回奇异值可以节省很大的存储空间。当然,如果我们要重构 A,就必须先将 sigma 转化为矩阵。
2、特征值分解
3、奇异值分解
4、低阶近似
5、SVD 举例
6、Python 实现 SVD
喜欢就点赞评论+关注吧
感谢阅读,希望能帮助到大家,谢谢大家的支持!