码农的世界

numpy.linalg矩阵求逆或伪逆

2019-05-30  本文已影响0人  霜天渔火

最近做数据挖掘又接触到线性代数,把逆和伪逆简单总结一下。

求逆

numpy.linalg.inv(a)

该函数求矩阵的逆,要求矩阵a是方阵并且非奇异

判断方阵非奇异有如下充要条件:

如果矩阵是奇异的,它就不存在逆矩阵,还有没有办法求一个近似解呢?答案就是伪逆矩阵

求伪逆

伪逆矩阵可以顾名思义,它也叫广义逆矩阵。伪逆矩阵有Penrose定义和E.H.Moore定义,实质上它们是等价的,在这里不详述。

求伪逆的方法是对矩阵a进行奇异值分解(SVD),可以用numpy.linalg的函数:

numpy.linalg.inv(a)

伪逆矩阵的应用很多,最简单的就是求解最小二乘问题,其解的矩阵形式为

B=(XTX)-1XTY

如果X不是列满秩,那么XTX就不存在逆矩阵,此时就要求伪逆来代替。

上一篇 下一篇

猜你喜欢

热点阅读