如何在python中获得两个向量的相关性[重复]

Posted

技术标签:

【中文标题】如何在python中获得两个向量的相关性[重复]【英文标题】:How to get correlation of two vectors in python [duplicate] 【发布时间】:2013-10-26 00:29:16 【问题描述】:

我在 matlab 中使用

a=[1,4,6]
b=[1,2,3]
corr(a,b)

返回 .9934。我试过numpy.correlate,但它返回的东西完全不同。获得两个向量相关性的最简单方法是什么?

【问题讨论】:

见@lgautier 回答[这里]***.com/a/15026044/1982962) 你试过 corrcoef:docs.scipy.org/doc/numpy/reference/generated/… 【参考方案1】:

文档表明 numpy.correlate 不是您要查找的内容:

numpy.correlate(a, v, mode='valid', old_behavior=False)[source]
  Cross-correlation of two 1-dimensional sequences.
  This function computes the correlation as generally defined in signal processing texts:
     z[k] = sum_n a[n] * conj(v[n+k])
  with a and v sequences being zero-padded where necessary and conj being the conjugate.

相反,正如其他 cmets 所建议的,您正在寻找 Pearson correlation coefficient。要使用 scipy 尝试:

from scipy.stats.stats import pearsonr   
a = [1,4,6]
b = [1,2,3]   
print(pearsonr(a,b))

这给了

(0.99339926779878274, 0.073186395040328034)

你也可以使用numpy.corrcoef:

import numpy
print(numpy.corrcoef(a,b))

这给出了:

[[ 1.          0.99339927]
 [ 0.99339927  1.        ]]

【讨论】:

“pearsonr(a,b)”打印的元组中的第二个值是多少? @MuhammadHaseebKhan 根据docs,它返回的值是(皮尔逊相关系数,2 尾 p 值) 嗨@Hooked:我在 2 列中有 2 个向量。我希望他们的 corr coef 在另一列中。我怎样才能做到这一点?谢谢!

以上是关于如何在python中获得两个向量的相关性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Python中获取两个向量的欧几里得距离[重复]

如何在postgres中获得两个向量之间的余弦距离?

怎么比较两个向量组相似度

如何将两个整数相除以获得双精度?

在SQLserver中如何获得两个日期相减的天数

位向量与布尔值列表的性能