train_inputs, test_inputs, y_scaler = MIMO_fulldata_preparation( df, n_test=4380, T=HORIZON, HORIZON=HORIZON, country=country) concat_input = tf.concat([train_inputs['X'], train_inputs['X2']], axis=2) history = LSTMIMO.fit(concat_input, train_inputs['target'], batch_size=BATCHSIZE, epochs=MAX_EPOCHS, validation_split=0.15, callbacks=[early_stopping, WandbCallback()], verbose=1) concat_input = tf.concat([test_inputs['X'], test_inputs['X2']], axis=2) FD_predictions = LSTMIMO.predict(concat_input) FD_eval_df = create_evaluation_df(FD_predictions, test_inputs, HORIZON, y_scaler) preds, actuals = format_output(FD_eval_df) preds = preds[np.where(preds.index.hour == 0)[0][0]:][::24] actuals = actuals[np.where(actuals.index.hour == 0)[0][0]:][::24] full = actuals.merge(preds, how='inner', left_index=True, right_index=True, suffixes=('_actuals', '_preds')) full.to_csv('./results/' + dset + '/' + wandb.run.name + '_' + str(i) + '.csv') preds = flatten(preds.values.tolist()) actuals = flatten(actuals.values.tolist()) mae = validation(preds, actuals, 'MAE') mape = validation(preds, actuals, 'MAPE') rmse = validation(preds, actuals, 'RMSE')
history = LSTMIMO.fit(global_inputs_X, global_inputs_T, batch_size=BATCHSIZE, epochs=MAX_EPOCHS, validation_split=0.15, callbacks=[early_stopping, WandbCallback()], verbose=1) val_acc_per_epoch = history.history['val_loss'] best_epoch = val_acc_per_epoch.index(min(val_acc_per_epoch)) + 1 print('Best epoch: %d' % (best_epoch,)) # Fit best model final_model = LSTMIMO.fit(global_inputs_X,global_inputs_T,epochs=best_epoch,batch_size=BATCHSIZE,verbose=0) metrics = pd.DataFrame(columns=['mae','mape', 'rmse', 'B'], index=range(28)) for i,df in enumerate(datasets): concat_input = tf.concat([dX_test[i]['X'],dX_test[i]['X2']], axis=2) FD_predictions = LSTMIMO.predict(concat_input) FD_eval_df = create_evaluation_df(FD_predictions, dX_test[i], HORIZON, dX_scaler[i], dXtest_scaler[i]) preds, actuals = format_output(FD_eval_df) preds = preds[np.where(preds.index.hour == 0)[0][0]:][::24] actuals = actuals[np.where(actuals.index.hour == 0)[0][0]:][::24] full = actuals.merge(preds, how='inner', left_index=True, right_index=True, suffixes=('_actuals', '_preds')) full.to_csv('./results/'+dset+'/'+wandb.run.name+'_'+str(i)+'.csv') preds = flatten(preds.values.tolist()) actuals = flatten(actuals.values.tolist()) mae = validation(preds, actuals, 'MAE') mape = validation(preds, actuals, 'MAPE') rmse = validation(preds, actuals, 'RMSE') #print('rmse {}'.format(rmse)) metrics.loc[i] = pd.Series({'mae':mae, 'mape':mape, 'rmse':rmse, 'B': names[i]}) wandb.log({"mape": metrics.mape.mean()}) wandb.log({"rmse": metrics.rmse.mean()}) wandb.log({"mae": metrics.mae.mean()})