Re: [问题] 关于反矩阵inv计算爆值是正常的吗?

楼主: starcloud (伤心吗?)   2016-07-12 04:23:01
※ 引述《ray0215 (❺❺❻❻)》之铭言:
: 小弟我最近需要计算相关系数(correlation coefficient matri)矩阵的反矩阵
: 例如
: Martrix array([[ 1. , 0.92531576, 0.81998247, 0.92586894],
: [ 0.92531576, 1. , 0.70974912, 0.72358554],
: [ 0.81998247, 0.70974912, 1. , 0.72669914],
: [ 0.92586894, 0.72358554, 0.72669914, 1. ]])
: 这样用numpy.linalg.inv算出来的值
: 会计算出
: array([[ 6.51500296e+15, -3.18743561e+15, -7.89299760e+14,
: -3.15207310e+15],
: [ -3.18743561e+15, 1.55943840e+15, 3.86161323e+14,
: 1.54213745e+15],
: [ -7.89299760e+14, 3.86161323e+14, 9.56245323e+13,
: 3.81877116e+14],
: [ -3.15207310e+15, 1.54213745e+15, 3.81877116e+14,
: 1.52502845e+15]])
: 每个都十五次方
: 我想应该不是正确解答吧@@
: 请问要怎么解决
: 先谢谢版上的大大了
你的矩阵行列式趋近于零,在很多数值运算的程式中
因为精度可以到很细,所以趋近于零的值也可以算出来
而实际上它就是0了XD ,所以你的矩阵是奇异矩阵(singular matrix)
反矩阵是 A*B=I B是A的反矩阵
而pinv是A*B*A=A B则是pseudo inverse matrix
所以如果你要取反矩阵算出correlation matrix
用pinv(pseudo-inverse)就可以了(我硕士班就是做过类似的事情啊。)
作者: s860134 (s860134)   2016-07-12 06:02:00
听到这个东西突然想起SVM推导过程...

Links booklink

Contact Us: admin [ a t ] ucptt.com