Как я могу предсказать, прогнозировать значение на следующий день, используя LSTM Keras? - PullRequest
0 голосов
/ 02 июня 2019

Я прошу вашего совета, чтобы спрогнозировать значения после этого, используя LSTM в Керасе. У меня есть x_train 62796 и x_test 15684, и я хочу предсказать значения после этого. Двадцать сборов данных соответствуют дню. Итак, я установил look_back на 20. И вот мой код:

...
look_back = 20
train_size = int(len(data) * 0.80)
test_size = len(data) - train_size

train = data[0:train_size]
test = data[train_size:len(data)]
x_train, y_train = create_dataset(train, look_back)
x_test, y_test = create_dataset(test, look_back)

x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
y_train=np.repeat(y_train.reshape(-1,1), 20, axis=1).reshape(-1,20,1)
y_test=np.repeat(y_test.reshape(-1,1), 20, axis=1).reshape(-1,20,1)
...
model = Sequential()

model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))

model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))

model.add(LSTM(1, return_sequences=True))

model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy'])
model.summary()
model.fit(x_train, y_train, epochs=10, batch_size=64)
p = model.predict(x_test)

Итак, predictions = model.predict(x_train) и форма (62796, 20, 1)

Я пытался этот код

future = []
currentStep = predictions[-20:, :, :] # -20 is last look_back number

for i in range(10):
    currentStep = model.predict(currentStep)
    future.append(currentStep)

В этом коде будущий результат:

1

но p = model.predict(x_test) 's:: 4000] результат:

2

Я хочу знать, как предсказать точное следующее значение. Но разница между этими двумя результатами очень велика. Я не знаю, где это пошло не так или код неисправен. Вот полный источник.

Спасибо за чтение.

...