匹配2个数组的值

时间:2016-05-21 15:35:36

标签: arrays matching cosine-similarity

我正在尝试创建一个程序,它会对一堆数组进行评级,以找到与给定数组最匹配的数组。所以说给定的数组是

[1, 80, 120, 155, 281, 301]

要比较的数组之一是

[-6, 78, 108, 121, 157, 182, 218, 256, 310, 408, 410]

如何将第一个数组中的值与第二个数组中的闭合值进行匹配,从而使其具有最低的总差异。 如果不清楚

1 => -6, 80 => 78, 120 => 121, 155 => 157

比281匹配最多310,因为它比256更接近但是这会强制301匹配到256.所以最好的整体匹配将是

281=>256 and 301=> 310

然后程序只需通过

计算评分 所有比赛都是

abs(-6 - 1) + abs(78-80)等。评级最低的阵列是最佳匹配

******* *******注

给定的数组与匹配数组的大小相同或者更小,并且只有正值。匹配数组可以具有负值。 我正在考虑使用余弦相似性,但我不确定如何实现这个问题。

1 个答案:

答案 0 :(得分:0)

通常,计算的距离更准确。 different approaches有优点和缺点。在您的示例中,您计算​​one dimension euclidean distances的总和。但是还有更多的扩展比较,比如dynamic time warping。它是一种算法,可以找到两个“阵列”之间的最佳对齐,并计算最佳距离。

您可以安装和使用this包。 Here你可以看到一个直观的例子。 DTW的另一个优点是,阵列的长度不必匹配。