0

有一个数学定理表明矩阵 A 与其转置相乘产生一个对称的正定矩阵(因此导致正特征值)。为什么中等大小的随机矩阵的对称性测试在这里失败?它始终适用于小矩阵(20,20 等)

import numpy as np
features = np.random.random((50,70))
autocovar = np.dot(np.transpose(features),features)
print((np.transpose(autocovar) == autocovar).all())

运行此代码时,我总是得到“错误”。我做错了什么?我需要自协方差矩阵来执行 PCA,但到目前为止我得到了复杂的特征值......

谢谢!

4

1 回答 1

0

这可能是由于浮点运算中的错误。您的矩阵在数值上可能非常接近对称矩阵,但由于有限精度算术中的错误,它在技术上是非对称的。因此,数值求解器可能会返回复杂的特征值。

一种解决方案(一种 hack)是对称矩阵,即用它的对称部分替换它。这个矩阵保证是对称的,即使在浮点运算中也是如此,并且它将非常接近您定义的矩阵(接近机器精度)。这可以通过

autocovar_sym = .5*(autocovar+autocovar.T)

希望这可以帮助。

于 2016-05-25T23:15:43.607 回答