【问题标题】:Covariance Matrix calculated by Python Numpy change every timePython Numpy计算的协方差矩阵每次都会变化
【发布时间】:2013-09-27 20:35:52
【问题描述】:

我有一个 1043*261 矩阵,0 到 1 之间的数字非常小,我使用 numpy.cov() 函数计算了 1043*1043 协方差矩阵。我尝试运行代码几次并得到相似(不完全相同)的协方差矩阵,但协方差矩阵中的元素在 e-7 的尺度上略有不同。这有时会使协方差矩阵成为非 PSD,这会给我带来严重的问题。

有谁知道为什么会存在差异以及如何解决?

附件是我通过两次运行相同的代码得到的两个协方差矩阵。如果你按元素比较它们,你会发现细微的差别:

No. 1
[[  5.05639177e-06   2.44041401e-06   3.30187175e-06 ...,   1.66634014e-06
4.03972183e-06   1.18433575e-06]
[  2.44041401e-06   9.67277658e-06   9.04356309e-06 ...,   2.50668884e-06
5.43371939e-06   4.74297546e-06]
[  3.30187175e-06   9.04356309e-06   2.09334309e-05 ...,   3.13977728e-06
8.69946165e-06   6.15981652e-06]
..., 
[  1.66634014e-06   2.50668884e-06   3.13977728e-06 ...,   4.20175297e-06
4.16076781e-06   1.59827406e-06]
[  4.03972183e-06   5.43371939e-06   8.69946165e-06 ...,   4.16076781e-06
2.58010941e-05   3.02797946e-06]
[  1.18433575e-06   4.74297546e-06   6.15981652e-06 ...,   1.59827406e-06
3.02797946e-06   6.60805238e-06]]

No.2
[[  5.05997030e-06   2.42187179e-06   3.30788097e-06 ...,   1.66495376e-06
4.03676937e-06   1.17413702e-06]
[  2.42187179e-06   9.60677140e-06   9.05219266e-06 ...,   2.50338648e-06
5.42679569e-06   4.75547515e-06]
[  3.30788097e-06   9.05219266e-06   2.04172017e-05 ...,   3.13058624e-06
8.67976701e-06   6.28137859e-06]
..., 
[  1.66495376e-06   2.50338648e-06   3.13058624e-06 ...,   4.20175297e-06
4.16076781e-06   1.59827884e-06]
[  4.03676937e-06   5.42679569e-06   8.67976701e-06 ...,   4.16076781e-06
2.58010941e-05   3.02810307e-06]
[  1.17413702e-06   4.75547515e-06   6.28137859e-06 ...,   1.59827884e-06
3.02810307e-06   6.63834973e-06]]

非常感谢!

【问题讨论】:

  • 有什么代码可以显示吗?任何重现该示例的内容都可以。

标签: python numpy covariance


【解决方案1】:

numpy.cov 似乎是确定性的:

import numpy

randoms = numpy.random.random((1043, 261))

covs = [numpy.cov(randoms) for _ in range(10)]
all((c==covs[0]).all() for c in covs)
#>>> True

我想问题出在其他地方。

另请注意,此结果适用于数字 1000th 大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多