如何让使用RNN - LSTM使用python的预测更加一致?

问题描述 投票:0回答:1

我已经建立了一套python脚本。这些脚本执行了以下任务

  1. 根据用户输入的信息(股票代码,开始日期,结束日期等)获取股票价格信息。
  2. 根据股票价格信息建立并训练模型。
  3. 预测下一个预测价格和相关的RMSE(均方根误差)。
  4. 将输出和用户输入一起写入一个xlsx文件。

到目前为止,一切都很好,它以一种体面的方式实现了上述所有功能。然而,每次我在执行脚本(2)和(3)时,如果数据和用户输入相同,我得到的预测值就会不同。我知道这些都是预测,即使所有因素都相同,预测值也会有所不同。

比如说,如果试验#1的预测值是100,那么试验#2的预测值可能是105,试验#3的预测值是95,以此类推。这种(正负)5的变化是可以接受的。但是预测值不能在80到120的范围内。

我的问题是 如何使预测值的变化最小化?

先谢谢你,Sanjay S

这是我正在使用的一个示例代码。

from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, LSTM, Dropout
from tensorflow.python.util import deprecation

model = Sequential()
lstm1 = LSTM(units=60, return_sequences=True, input_shape = (x_train.shape[1],1))
lstm2 = LSTM(units=60, return_sequences=True)
lstm3 = LSTM(units=60)
dropOut = Dropout(0.2)
dense = Dense(units=1)

model.add(lstm1)
model.add(dropOut)

model.add(lstm2)
model.add(dropOut)

model.add(lstm2)
model.add(dropOut)

model.add(lstm3)
model.add(dropOut)

model.add(dense)
model.compile(optimizer='adam', loss='mean_squared_error')
python tensorflow machine-learning lstm recurrent-neural-network
1个回答
0
投票

如果你的模型所预测的数值差异很大,那么说明你的模型训练得不够好。请进一步训练你的模型,增加纪元的数量,并为你的模型多加几层。

另外我建议你在模型的各层中加入适当的激活函数。


0
投票

首先,LSTM不足以预测股价,原因有很多,即使有20个技术指标,如这个Kaggle笔记本所示(https:/www.kaggle.comkratisaxenastock-market-technical-indicators-visualization).其次,为了持续获得相同的结果,最简单的方法是设置一个numpy种子,使用 np.random.seed(0)或任何你喜欢的整数来代替0。

© www.soinside.com 2019 - 2024. All rights reserved.