gpt4 book ai didi

Python numpy.corrcoef() RuntimeWarning : invalid value encountered in true_divide c/= stddev[:, 无]

转载 作者:太空狗 更新时间:2023-10-29 21:30:34 31 4
gpt4 key购买 nike

似乎 numpy 中的 corrcoef 在常量列表传递给 corrcoef() 时抛出一个 RuntimeWarning函数,例如下面的代码抛出警告:

import numpy as np
X = [1.0, 2.0, 3.0, 4.0]
Y = [2, 2, 2, 2]
print(np.corrcoef(X, Y)[0, 1])

警告:

/usr/local/lib/python3.6/site-packages/numpy/lib/function_base.py:3003: RuntimeWarning: invalid value encountered in true_divide
c /= stddev[:, None]

谁能解释为什么当其中一个列表是常量时会抛出此错误,以及如何在将常量列表传递给函数时防止此错误。

最佳答案

相关性衡量两个向量在变化时相互跟踪的程度。当一个向量不发生变化时,您无法跟踪相互变化。

如 OP 评论中所述,formula对于 Pearson 的乘积矩相关系数,用 XY 的协方差除以它们的标准差的乘积。由于 Y 在您的示例中方差为零,因此其标准差也为零。这就是您收到 true_divide 错误的原因 - 您正试图除以零。

注意:从工程的角度来看,简单地向 Y 中的一个条目添加一个非常小的数量(例如,一个刚好高于机器 epsilon 的值)似乎很诱人,以便解决零除法问题。但这在统计上是不可行的。即使添加 1e-15 也会严重扰乱您的相关系数,具体取决于您添加的值。

考虑这两种情况的区别:

X = [1.0, 2.0, 3.0, 4.0]

tiny = 1e-15

# add tiny amount to second element
Y1 = [2., 2.+tiny, 2., 2.]
np.corrcoef(X, Y1)[0, 1]
-0.22360679775

# add tiny amount to fourth element
Y2 = [2., 2., 2., 2.+tiny]
np.corrcoef(X, Y2)[0, 1]
0.67082039325

这对统计学家来说可能是显而易见的,但考虑到问题的性质,这似乎是一个相关的警告。

关于Python numpy.corrcoef() RuntimeWarning : invalid value encountered in true_divide c/= stddev[:, 无],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45897003/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com