我正在尝试创建一个程序,它会对一堆数组进行评级,以找到与给定数组最匹配的数组。所以说给定的数组是
[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)
等。评级最低的阵列是最佳匹配
******* *******注
给定的数组与匹配数组的大小相同或者更小,并且只有正值。匹配数组可以具有负值。 我正在考虑使用余弦相似性,但我不确定如何实现这个问题。
答案 0 :(得分:0)
通常,计算的距离更准确。 different approaches有优点和缺点。在您的示例中,您计算one dimension euclidean distances的总和。但是还有更多的扩展比较,比如dynamic time warping。它是一种算法,可以找到两个“阵列”之间的最佳对齐,并计算最佳距离。