什么方法返回两个函数之间的单一相似度量?

时间:2014-11-25 21:42:03

标签: python numpy correlation

这种情况下的函数是离散数据集。我没有实际的功能。

我有两个案例。一个是数据集显示为近似平行线的位置。更复杂的情况是线条共享相似的斜率但沿x轴移动。

我尝试了numpy.correlate,但输出不是一个数字。我还不确定这种方法如何工作,因为在x轴上采样数据的点并不总是相同的。

我也尝试使用numpy.fft.rfft对两个规范化函数进行傅里叶变换。然后我在两个转换函数的乘积上使用了numpy.fft.irfft。这也是返回一个函数而不是单一的相似度量。

我正在寻找最简单,最有效的方法来获得一个数字,表示在类似空间内采样的两个数据集之间的相似性度量。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果你的数据是这样的(我的意思是你所有的点都沿着两条平行线): enter image description here

然后,您可以通过最小二乘法计算线系数y = a * x + b。线y 1 和y 2 之间的相似性将简单地为| b 1 - b 2 |

答案 1 :(得分:0)

据我所知,有两种方法:相关和互信息。

在numpy中,使用numpy.corrcoef进行Pearson(简单)相关。对于Spearman等级相关,请使用scipy中的scipy.stats.spearmanr

如需互信息,请查看this discussion

要查看您的f1f2是否需要互信息,或者Pearson相关性正常,请在散点图中绘制您的点:

import matplotlib.pyplot as plt

plt.scatter(f1, f2)
plt.show()
如果它们沿着一条线形成或多或少的直云,那么Pearson就应该工作了。否则尝试Spearman和互信息