为什么我的Numpy相关代码停止工作?

时间:2019-06-17 12:56:41

标签: python ubuntu

np.corrcoef已停止工作。

它一直工作到几个小时之前,然后神秘地停止了工作。我尝试将所有数字转换为浮点数,然后将所有数字转换为int,但np.corrcoef仍然无法正常工作。

correlation_30_16 = np.corrcoef(final_output_row_30,   final_output_row_16)
print()
print('correlation_30_16 = ', correlation_30_16)

给我

Warning (from warnings module):
  File "/home/robert/.local/lib/python3.6/site-packages/numpy/lib/function_base.py", line 2400
    c /= stddev[:, None]
RuntimeWarning: invalid value encountered in true_divide

correlation_30_16 =  [[nan nan]
 [nan nan]]

我正在尝试将列表30与列表16相关联。

final_output_row_30 =  [0.25, 0.25, 0.25, 0.25, 0.25]
final_output_row_16 =  [178, 178, 178, 178, 178]

我以前常常这样获得输出:

12_34 correlation_f_alleles  =  [[ 1.         -0.90876454]
 [-0.90876454  1.        ]]

2 个答案:

答案 0 :(得分:0)

它正常工作。问题是您的输入值。如果仅观察到相同的X和Y值,就不可能计算出相关性。

尝试np.corrcoef([0.21, 0.22, 0.23, 0.24, 0.25], [177, 178, 179, 180, 181]),这将(正确地)为您提供每次1.0的完美相关性。

下面是相关系数的公式。由于在每种情况下xi都等于所有x的平均值(与y相同),因此您将在该行下方以零结尾。

enter image description here

答案 1 :(得分:0)

np.corrcoev计算相关系数矩阵。此计算包括除以两个主角的协方差,在您的情况下为零。由于相关系数在数学上是不确定的,因此会引发错误,请参见:

np.cov([0.25, 0.25, 0.25, 0.25, 0.25], [178, 178, 178, 178, 178]) # covariance is all zeros.