예제 #1
0
        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')
예제 #2
0
    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()})