奇异值分解(SVD)





下面说一下在 python 中实现 SVD
Numpy 有一个 linalg 的线性代数工具箱。接下来我们了解一下 领用该工具箱如何实现下矩阵的SVD处理。
矩阵
A = [[1,3,5,9,7],[8,12,3,4,7],[3,1,5,7,13],[11,10,5,9,3],[14,16,2,8,7]]
from numpy import ∗
U,Sigma,VT = linalg.svd(A)
print U,Sigma,VT
在 python 中运行上述代码,得到一下结果:

U=array(
[[-0.27373252,0.50806498,-0.43241186,-0.64288486,0.25818506], 
[-0.44384892,-0.14105122,0.47686421,-0.47422006,-0.57516828], 
[-0.31310645,0.74960322,0.32368329,0.48004092,-0.06963623], 
[-0.48013606,-0.17353387,-0.66483461,0.3448185,-0.42243401], 
[-0.63206198,-0.36049346,0.19709028, 0.11169292,0.64747373]])  

VT=array(
[([-0.51415401,-0.5816577 ,-0.21580804,-0.43018369,-0.40704897], 
[-0.37330787,-0.48505774,0.29967486,0.3370468,0.64958038], 
[-0.03248352,0.20328693,-0.33122133,-0.66879308,0.63295141], 
[-0.03248352, 0.20328693,-0.33122133,-0.66879308, 0.63295141], 
[0.76810761,-0.61964022,-0.09418406,-0.10598015,0.07716396], 
[-0.07240458,-0.03337268,-0.86315912, 0.49277325,0.07599146] )] 

Sigma=array([36.74814846,14.27057024,6.16821006, 3.07272287, 1.85363656] 

        注意:矩阵Sigma以行向量返回,而非矩阵。(由于矩阵除了对 角线上元素其它全为 0,故为节省空间仅返回对角元素。) 
本小节至此,我们知道了奇异值分解的定义、物理及几何意义, 并且知道在 python 中调用程序包做奇异值分解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值