Если вы хотите предсказать выходное значение вашей серии на t + x на основе данных за время t , данные, которые необходимо передать в сеть, уже должны иметь это формат.
Формирование данных временных рядов:
Если у вас есть 3000 точек данных и вы хотите предсказать выходное значение для следующей «виртуальной» точки 500, вы должны сместить выходное значение на эту величину. Для примера:
В вашем наборе данных ваша 500-я точка данных соответствует 500-му выходному значению. Если вы хотите предсказать «будущие» значения, то у 500-й точки данных должно быть 1000-е выходное значение. Вы можете сделать это в пандах с помощью функции shift . Имейте в виду, что при этом вы потеряете последние 500 точек данных, если у них больше не будет выходного значения.
Тогда, когда вы прогнозируете точку данных xi, вы получите выходное значение yi + 500. На таких сайтах, как machinelearningmastery
, вы должны найти некоторые основные руководства по прогнозированию временных рядов.
Хорошая практика для оценки модели:
Если вы хотите лучше оценить качество своей модели, сначала найдите метрики, которые соответствуют вашей проблеме, и попробуйте увеличить процентное соотношение тестовых наборов. Хотя графика является хорошим способом визуализации результата, она может быть обманчива, попробуйте объединить ее с некоторыми показателями! (будьте осторожны с Mean Squarred Error, он может дать вам смещенную оценку со значением в диапазоне [-1; 1], поскольку квадрат ошибки в этом диапазоне всегда будет меньше, чем острая ошибка, вместо этого попробуйте Mean Absolute Error)
Утечка данных при отбрасывании данных:
Несмотря на то, что удаление данных, как правило, хорошо, вам нужно быть осторожным при этом. Вы допустили нечто, называемое утечкой данных. Вы использовали scalling для всего набора данных перед тем, как разбить его на обучающие и тестовые наборы. Дальнейшее чтение об этой утечке данных .
Обновление
Мне кажется, я неправильно понял вашу проблему.
Если вы хотите «прогнозировать дальше, чем просто набор тестовых данных», вам понадобятся некоторые невидимые / новые данные, чтобы сделать больше прогноза. Набор тестов предназначен только для оценки эффективности фазы обучения.
Теперь, если вы хотите прогнозировать дальше, чем просто следующий шаг (это не позволит вам «прогнозировать дальше, чем просто набор тестовых данных» из-за способа изменения набора данных, см. Ниже):
Ваша модель в том виде, в котором она сделана, только когда-либо предскажет следующий шаг.
В вашем примере вы передаете алгоритму серию длины 'seq_len' и даете им в качестве выходного значения сразу после окончания этих рядов. Если вы хотите, чтобы ваш алгоритм научился предсказывать более чем один шаг в будущее, вы должны иметь значение y_train в соответствующее время в будущем, например:
x = [0,1,2,3,4,5,6,7,8,9,10,...]
seq_len = 5
step_to_predict = 5
Итак, чтобы предсказать не один шаг в будущее, а пять, ваша серия должна выглядеть следующим образом:
x_serie_1 = [0,1,2,3,4]
y_serie_1 = [9]
x_serie_2 = [1,2,3,4,5]
y_serie_2 = [10]
Это способ научить вашу модель тому, как делать прогнозы дальше в будущее, чем просто следующий шаг.