[英]One step prediction of time series using LSTM
我想使用 LSTM 預測股票價格。 我已經成功訓練了我的 model 並保存了它。 現在我已經將它重新加載了,我將如何使用model.predict()
來預測在數據集中沒有相應值的股票價格,因為目前我只能“預測”我的數據集中已經存在的已知值。
Senario:我的 model 已經過訓練(具有足夠高的准確度),我已經保存了它。 我想申請我的 model ( load_model()
)。 我的時間步長設置為 30 天,因此我以適當的格式加載了 30 天的數據(例如 3 月 9 日 - 4 月 8 日),但顯然我沒有“預期的”output。 我將如何使用model.predict()
來預測未來價值。 或者我錯過了什么?
上圖是我使用model.predict()
來預測數據集中已經存在的價格(數據集有 1150 個數據點)。 圖表在第 1150 天結束。 我如何預測第 1151 天?
Model 總結
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (50, 60, 100) 42400
_________________________________________________________________
dropout_1 (Dropout) (50, 60, 100) 0
_________________________________________________________________
lstm_2 (LSTM) (50, 60) 38640
_________________________________________________________________
dropout_2 (Dropout) (50, 60) 0
_________________________________________________________________
dense_1 (Dense) (50, 20) 1220
_________________________________________________________________
dense_2 (Dense) (50, 1) 21
=================================================================
Total params: 82,281
Trainable params: 82,281
Non-trainable params: 0
因此,假設您已經定義、訓練和保存了 model,如下所示:
# define model
model = Sequential()
model.add(LSTM(...))
# compile model
model.compile(...)
# fit model
model.fit(...)
# save model
model.save('lstm_model.h5')
要使用 model 預測新值,請加載 model 並使用一組新輸入運行預測。 例如,假設您根據 X 預測 Y。它看起來像下面這樣:
from keras.models import load_model
# load model
model = load_model('lstm_model.h5')
# define input
X = ...
# make predictions
yhat = model.predict(X, verbose=0)
print(yhat)
看起來您正在處理一個序列回歸問題,您可以在其中定義時間步長並且 LSTM 預測該值。 因此,輸入 X 只是進行預測yhat
所需的數據/序列。 它不包括之前的所有訓練數據。 例如,如果您訓練 LSTM 的輸入介於1...1500
之間,則X
將為1501
。
請記住在推理數據上使用您在訓練數據上使用的任何數據准備過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.