我已经建立了一套python脚本。这些脚本执行了以下任务
到目前为止,一切都很好,它以一种体面的方式实现了上述所有功能。然而,每次我在执行脚本(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')
如果你的模型所预测的数值差异很大,那么说明你的模型训练得不够好。请进一步训练你的模型,增加纪元的数量,并为你的模型多加几层。
另外我建议你在模型的各层中加入适当的激活函数。
首先,LSTM不足以预测股价,原因有很多,即使有20个技术指标,如这个Kaggle笔记本所示(https:/www.kaggle.comkratisaxenastock-market-technical-indicators-visualization).其次,为了持续获得相同的结果,最简单的方法是设置一个numpy种子,使用 np.random.seed(0)
或任何你喜欢的整数来代替0。