首页 > 解决方案 > 如何从 LSTM 进行预测并使用 python 绘制它?

问题描述

我仍然是使用LSTM制作预测时间序列数据的初学者。我已经成功地使用来自时间序列的LSTM制作了该模型,以使用本教程进行预测:

https://towardsdatascience.com/time-series-analysis-visualization-forecasting-with-lstm-77a905180eba

现在我想要的是使用该模型:

  1. 预测新值
  2. matplotlib 并使用例如绘制这些值:

如果我想要接下来 4 天的值,请获取它并绘制在曲线上。我已经搜索了很多但没有找到下面的结果是模型代码和我绘制的曲线谢谢

model = Sequential()
model.add(LSTM(100, input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')

history = model.fit(X_train, Y_train, epochs=20, batch_size=70, validation_data=(X_test, Y_test), 
                    callbacks=[EarlyStopping(monitor='val_loss', patience=10)], verbose=1, shuffle=False)

model.summary()

train_predict = model.predict(X_train)
test_predict = model.predict(X_test)
# invert predictions
train_predict = scaler.inverse_transform(train_predict)
Y_train = scaler.inverse_transform([Y_train])
test_predict = scaler.inverse_transform(test_predict)
Y_test = scaler.inverse_transform([Y_test])
print('Train Mean Absolute Error:', mean_absolute_error(Y_train[0], train_predict[:,0]))
print('Train Root Mean Squared Error:',np.sqrt(mean_squared_error(Y_train[0], train_predict[:,0])))
print('Test Mean Absolute Error:', mean_absolute_error(Y_test[0], test_predict[:,0]))
print('Test Root Mean Squared Error:',np.sqrt(mean_squared_error(Y_test[0], test_predict[:,0])))

然后用于绘制结果(当我想继续曲线以预测下一个时间段时)

aa=[x for x in range(200)]
plt.figure(figsize=(8,4))
plt.plot(aa, Y_test[0][:200], marker='.', label="actual")
plt.plot(aa, test_predict[:,0][:200], 'r', label="prediction")
# plt.tick_params(left=False, labelleft=True) #remove ticks
plt.tight_layout()
sns.despine(top=True)
plt.subplots_adjust(left=0.07)
plt.ylabel('Global_active_power', size=15)
plt.xlabel('Time step', size=30)
plt.legend(fontsize=15)
plt.show();

预言

标签: pythondeep-learningtime-serieslstmforecasting

解决方案


推荐阅读