--- title: Title keywords: fastai sidebar: home_sidebar nb_path: "nbs/experiments__auto.ipynb" ---
import matplotlib.pyplot as plt
dataset = ['NP']
Y_df, X_df, S_df = nf.data.datasets.epf.EPF.load_groups(directory='data', groups=dataset)
Y_df['y'] = Y_df['y']/Y_df['y'].max()
X_df['Exogenous1'] = X_df['Exogenous1']/X_df['Exogenous1'].max()
X_df['Exogenous2'] = X_df['Exogenous2']/X_df['Exogenous2'].max()
config_dict = {
'nbeats':
{'space': None, # Use default
'hyperopt_steps': 5,
'timeout': 60*1
},
'nhits':
{'space': None, # Use default
'hyperopt_steps': 5,
'timeout': 60*1
},
'rnn':
{'space': None, # Use default
'hyperopt_steps': 5,
'timeout': 60*1
}
}
best_model, results = auto(config_dict=config_dict,
Y_df=Y_df, X_df=X_df, S_df=None,
loss_function_val=nf.losses.numpy.mae, loss_functions_test={'mae':nf.losses.numpy.mae,'mse':nf.losses.numpy.mse},
forecast_horizon=24, ts_in_val=168, ts_in_test=168,
return_forecasts=True, return_model=True,
test_auto=True,
verbose=False)
time = results['nbeats']['optimization_times']
losses = results['nbeats']['optimization_losses']
plt.plot(time, losses)
plt.xlabel('segs')
plt.ylabel('val loss')
best_nhits = results['nhits']['y_hat']
best_nbeats = results['nbeats']['y_hat']
best_rnn = results['rnn']['y_hat']
y_true = results['nbeats']['y_true']
plt.plot(y_true[::24,:].flatten(), label='True')
plt.plot(best_nhits[::24,:].flatten(), label='N-HiTS')
plt.plot(best_nbeats[::24,:].flatten(), label='N-BEATS')
plt.plot(best_rnn[::24,:].flatten(), label='RNN')
plt.legend()
best_model
Y_forecast_df = Y_df[Y_df['ds']<'2016-12-27']
X_forecast_df = X_df[X_df['ds']<'2016-12-28']
best_model.return_decomposition = False
forecast_df = best_model.forecast(Y_df=Y_forecast_df, X_df=X_forecast_df, S_df=None, batch_size=2)
forecast_df