Как я могу предсказать следующее значение временного ряда, используя метод прогнозирования Tensorflow? - PullRequest
6 голосов
/ 22 февраля 2020

Мне интересно, как прогнозировать и получать данные будущих временных рядов после обучения модели. Я хотел бы получить значения после N шагов. Интересно, были ли данные временного ряда правильно изучены и предсказаны? Как мне сделать это правильно, чтобы получить следующее (следующее) значение? Я хочу получить следующее значение, используя model.predict или аналогичный.

У меня есть x_test и x_test[-1] == t Итак, значение следующего значения равно t+1, t+2, .... t+n. В этом примере Я хочу получить t+1, t+2 ... t+n

Первый

Я пытался использовать данные фондового индекса

inputs = total_data[len(total_data) - forecast - look_back:]
inputs = scaler.transform(inputs)
X_test = []
for i in range(look_back, inputs.shape[0]):
    X_test.append(inputs[i - look_back:i])
X_test = np.array(X_test)
predicted = model.predict(X_test)

, но результат, как показано ниже

enter image description here

Результаты X_test[-20:] и следующих 20 прогнозов выглядят одинаково. Мне интересно, правильно ли это метод обучения и прогнозируемое значение, а также, если результат был правильным.

полный источник

Метод, который я попробовал первым, не работал правильно.

Второй

Я понял, что что-то не так, я попытался использовать другие официальные данные, поэтому я использовал временные ряды в учебнике Tensorflow , чтобы попрактиковаться в обучении модели.

a = y_val[-look_back:] 
for i in range(N-step prediction): #predict a new value n times.
    tmp = model.predict(a.reshape(-1, look_back, num_feature)) #predicted value     
    a = a[1:] #remove first     
    a = np.append(a, tmp) #insert predicted value

Результаты были предсказаны в форме линейной регрессии, очень отличающейся от реальных данных.

2

Вывод ненормальной линейной регрессии, которая не зависит от реальных данных:

полный исходный код (После 25-й строки мой код.)

Я действительно очень Любопытно, что Как я могу предсказать следующее значение временного ряда, используя метод предсказания Tensorflow

Мне не интересно, работает это теоретически или нет. Мне просто интересно, как получить следующие n шагов, используя метод прогнозирования.

Спасибо за чтение длинного вопроса. Я прошу совета по поводу вашего бесценного мнения.

1 Ответ

0 голосов
/ 02 марта 2020

«lstm» обычно используется для прогнозирования трехмерных данных => цель, вход которой имеет одинаковый номер временного кадра (n, t, f) «n» для номера данных «t» для номера кадра, «f» для номера объекта

то, что вы хотите предсказать, это 1D data => target (t, f)
, когда у вас f = 0, тогда вы можете использовать только F (t) => y, если вы можете оценить функцию F тогда ты можешь получить у. NN не может здесь помочь

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