簡體   English   中英

使用 LSTM 一步預測時間序列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM