我想使用LSTM预测股票价格。我已经成功训练了模型并保存了模型。现在,将其重新加载,如何使用model.predict()
来预测数据集中没有对应值的股票价格,因为目前我只能“预测”数据集中已经存在的已知值。
Senario:我的模型已经过训练(具有足够的准确性),并且保存了它。我想应用我的模型(load_model()
)。我的时间步长设置为30天,因此我已经以适当的格式加载了30天的数据(例如3月9日至4月8日),但是显然我没有“预期的”输出。我将如何使用model.predict()
来预测未来价值。还是我想念什么?
上图是当我使用model.predict()
来预测数据集中已经存在的价格时(数据集具有1150个数据点)。该图在第1150天结束。我如何预计第1151天?
模型摘要
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
答案 0 :(得分:1)
因此,假设您已经定义,训练并保存了如下模型:
# define model
model = Sequential()
model.add(LSTM(...))
# compile model
model.compile(...)
# fit model
model.fit(...)
# save model
model.save('lstm_model.h5')
要使用该模型预测新值,请加载模型并使用新的一组输入运行预测。例如,假设您基于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
。
请记住,也要对推理数据使用您在训练数据上使用的任何数据准备过程。