Сравнение графиков (LineCharts) - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь сравнить набор графиков. График Я хочу сравнить все «тонкие» печатные графики с «толстыми» (-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,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,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,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 не совпадает правильно, я хочу, чтобы алгоритм распознал шаблон.

Решения

  1. Я читал об интерполяции более толстых графиков исравнивая их с другими.Я мог бы найти решение для интерполяции графика scipy , но я не мог найти способ привязать его к другим графикам.Я также не уверен, что это будет соответствовать Графику, где DataPoints «отсутствуют» (например, Grap короче Графа цели)
  2. Я думал о Maschin Lerning или Распознавании паттернов, и я пытался найтинесколько хороших очков, но поле огромно.

  3. Упомянутый Яковом Даном я пытался

импортировать 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] valid

Можете ли вы объяснить, что в результатестоит?

Вопрос: - Как лучше всего это сделать?Может ли кто-нибудь дать мне подсказку, с чего начать или как решить эту проблему?

1 Ответ

0 голосов
/ 04 декабря 2018

Начните с нормализации амплитуды каждого графика, затем рассчитайте попарную взаимную корреляцию.

Предположим, у вас есть array_a и array_b, которые содержат данные, которые вы хотите сравнить.Вы можете взаимно коррелировать их, используя numpy, например:

cc = np.correlate (array_a, array_b, mode = 'full').

cc - это vector, а не значение.Что содержит cc, так это сходство между array_a и смещенной версией array_b.cc[0] содержит сходство между array_a и array_b, когда array_b смещено на 0, cc[1] содержит сходство между array_a и array_b, когда array_b смещено на 1, cc[2] содержитсходство между array_a и array_b, когда array_b смещено на 2, и т. д. ... для всех возможных сдвигов, когда есть перекрытие между array_b и array_a

Посмотрите, можете ли вывозьми отсюда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...