I currently have a Keras LSTM model set up for a timeseries forecast. I have made fitted data to the model and made some predictions. I have also outputted the RMSE values (if that helps).
How do I calculate the confidence interval for my prediction? Thank you.
def fit_model(train, batch_size, num_epochs, neurons):
X, y = train[:, 0:-1], train[:, -1]
X = X.reshape(X.shape[0], 1, X.shape[1])
model = Sequential()
model.add(LSTM(neurons, batch_input_shape=(batch_size, X.shape[1], X.shape[2]), stateful=True))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
for i in range(num_epochs):
model.fit(X, y, epochs=1, batch_size=batch_size, verbose=0, shuffle=False)
model.reset_states()
return model
error_scores = list()
repeats = 5
for r in range(repeats):
# fit the model
batch_size = 1
epochs = 200
model = fit_model(train_scaled, batch_size, epochs, neurons)
# forecast the entire training dataset to build up state for forecasting
train_reshaped = train_scaled[:, 0].reshape(len(train_scaled), 1, 1)
model.predict(train_reshaped, batch_size=batch_size)
# forecast test dataset
test_reshaped = test_scaled[:, 0].reshape(len(test_scaled), 1, 1)
output = model.predict(test_reshaped, batch_size=batch_size)
predictions = list()
for i in range(len(output)):
# make one-step forecast
yhat = output[i,0]
X = test_scaled[i, 0:-1]
# invert scaling
yhat = invert_scale(scaler, X, yhat)
# invert differencing
yhat = inverse_difference_series(raw_values, yhat, len(test_scaled)+1-i)
# store forecast
predictions.append(yhat)
rmse = sqrt(mean_squared_error(raw_values[-80:], predictions))
print('%d) Test RMSE: %.3f' % (r+1, rmse))
error_scores.append(rmse)
from Python - How to get confidence interval in Keras models?
No comments:
Post a Comment