【问题标题】:How do we make the predictions using RNN - LSTM using python more consistent?我们如何使使用 RNN 的预测 - 使用 python 的 LSTM 更加一致?
【发布时间】:2020-05-15 21:19:26
【问题描述】:

我已经构建了一组 python 脚本。脚本执行以下任务 -

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

到目前为止,一切都很好,它以一种体面的方式完成了上述所有工作。但是,每次我使用相同的数据和用户输入执行脚本 (2) 和 (3) 时,都会得到不同的预测值。我明白这些都是预测,即使所有因素保持相同,预测值也会有所不同。

例如,如果 trial#1 的 pred 值为 100,则 trial#2 的 pred 值为 105,trial#3 的 pred 值为 95,以此类推。这种(加/减)5 的变化是可以接受的。但是pred值不能在80到120之间。

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

提前致谢, 桑杰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】:

    如果您的模型预测的值的变化很大,则表明您的模型训练得不够好。请通过增加 epoch 数来进一步训练您的模型,并为您的模型添加更多层。

    另外我建议您在模型的层中添加适当的激活函数。

    【讨论】:

      【解决方案2】:

      首先,由于多种原因,LSTM 不足以预测股票价格,即使这个 Kaggle 笔记本 (https://www.kaggle.com/kratisaxena/stock-market-technical-indicators-visualization) 显示了 20 个技术指标。 其次,要始终获得相同的结果,最简单的方法是设置一个 numpy 种子,使用 np.random.seed(0) 或您喜欢的任何整数来代替 0。

      【讨论】:

        猜你喜欢
        • 2021-11-03
        • 1970-01-01
        • 2018-11-29
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-27
        • 2020-04-18
        相关资源
        最近更新 更多