我正在尝试比较一组图表。 Plot我想将所有“薄”打印图与“厚”(-GoalGraphs)比较。
数据 -所有数据的长度和幅度略有不同(请参见下文)
图a:[315,92,60,46,36,33,29,28,26,24,23,22,20,21,19,19,18,17,18,17,16,17 ,16,16,17,16,16,17,16,17,16,17,15,17,16,17,16,17,17,16,16,16,16,16,17,17,16,17 ,16,16,16,15,16,17,17,16,16,17,16,17,16,17,16,16,17,16,16,16,16,16,17,16,17,16 ,17,18,16,18,18,18,18,19,19,20,20,23,30,40,56,69,62,59,55,59,66,78,79,75,84 ,77,72,73,79,83,86,586]
图形x:[302,88,56,45,38,34,30,28,25,25,22,22,20,20,18,19,17,18,17,16,17,16 ,16,16,16,16,16,15,16,17,16,16,17,16,16,17,16,16,16,16,17,16,17,17,17,16,17,17 ,17,17,17,18,17,18,19,19,19,20,23,27,37,49,69,64,61,56,55,60,71,79,75,78,87 ,73,75,78,79,81,590]
目标-我想检查“更细”图的形状是否与“更细”图的形状相同。因此,即使DataPoints的位置不正确匹配,我也希望算法能够识别出模式。
解决方案
我对Maschin Lerning或Pattern Recognition有所了解,我试图找到一些好的陈述要点,但领域非常大。
我尝试过Yakov Dan提到的
将numpy导入为np
array_a = [315,92,60,46,36,33,29,28,26 ...]
array_b = [302,88,56,45,38,34,30,28,25 ...]
print(np.correlate(array_a,array_b,'valid'),'valid')
这将导致[578559]有效
您能解释一下结果代表什么吗?
问题:-最佳方法是什么?有人可以给我提示从哪里开始,或者如何解决这个问题?
答案 0 :(得分:0)
首先归一化每个图的幅度,然后计算成对的互相关。
假设您有array_a
和array_b
,其中包含要比较的数据。您可以使用numpy对它们进行互相关,如下所示:
cc = np.correlate(array_a,array_b,mode ='full')。
cc是vector
,而不是值。抄送包含的内容是array_a
与array_b
的移位版本之间的相似性。当cc[0]
偏移0时,array_a
包含array_b
和array_b
之间的相似性,cc[1]
包含array_a
和{{1}之间的相似性}当array_b
移动1时
当array_b
偏移2时,cc[2]
和array_a
之间具有相似性,以此类推……对于array_b
之间重叠的所有可能的偏移和array_b
看看是否可以从这里拿走