SVD 奇异值分解

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

这里写图片描述

喜欢就点赞评论+关注吧

这里写图片描述

感谢阅读,希望能帮助到大家,谢谢大家的支持!

猜你喜欢

转载自blog.csdn.net/qq_41455420/article/details/79859968