这种情况下的函数是离散数据集。我没有实际的功能。
我有两个案例。一个是数据集显示为近似平行线的位置。更复杂的情况是线条共享相似的斜率但沿x轴移动。
我尝试了numpy.correlate,但输出不是一个数字。我还不确定这种方法如何工作,因为在x轴上采样数据的点并不总是相同的。
我也尝试使用numpy.fft.rfft对两个规范化函数进行傅里叶变换。然后我在两个转换函数的乘积上使用了numpy.fft.irfft。这也是返回一个函数而不是单一的相似度量。
我正在寻找最简单,最有效的方法来获得一个数字,表示在类似空间内采样的两个数据集之间的相似性度量。
有什么想法吗?
答案 0 :(得分:0)
如果你的数据是这样的(我的意思是你所有的点都沿着两条平行线):
然后,您可以通过最小二乘法计算线系数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
要查看您的f1
和f2
是否需要互信息,或者Pearson相关性正常,请在散点图中绘制您的点:
import matplotlib.pyplot as plt
plt.scatter(f1, f2)
plt.show()
如果它们沿着一条线形成或多或少的直云,那么Pearson就应该工作了。否则尝试Spearman和互信息