Ejemplo n.º 1
0
                bo3_ensemble = model_predictions[model] * pesos2[i] + bo3_ensemble
                bo3_mean = model_predictions[model] / len(score) + bo3_mean

            # compute score
            m = info_dataset.Frequency[freq[0] + '1']
            mase_all.append(np.vstack([
                mase_m4(train, test, models_des_predictions[0], m=m),
                mase_m4(train, test, ensemble_pred, m=m),
                mase_m4(train, test, mean_pred, m=m),
                mase_m4(train, test, groe_ensemble, m=m),
                mase_m4(train, test, bo3_ensemble, m=m),
                mase_m4(train, test, bo3_mean, m=m),
            ]))
            smape_all.append(np.vstack([
                smape_m4(test, models_des_predictions[0]),
                smape_m4(test, ensemble_pred),
                smape_m4(test, mean_pred),
                smape_m4(test, groe_ensemble),
                smape_m4(test, bo3_ensemble),
                smape_m4(test, bo3_mean),
            ]))
        pkl.dump(mase_all, open("ensembling_mase_"+freq+".pkl", "wb"))
        pkl.dump(smape_all, open("ensembling_smape_"+freq+".pkl", "wb"))
        print("MASE; Naive2: {:.3f}, Linear Regression: {:.3f}, Mean ensembling: {:.3f}, GROE ensembling: {:.3f}, "
              "BO3 ensembling: {:.3f}, BO3 Mean: {:.3f}".format(*tuple(np.nanmean(np.stack(mase_all), axis=(0, 2)))))
        print("sMAPE; Naive2: {:.3f}, Linear Regression: {:.3f}, Mean ensembling: {:.3f}, GROE ensembling: {:.3f}, "
              "BO3 ensembling: {:.3f}, BO3 Mean: {:.3f}".format(*tuple(np.nanmean(np.stack(smape_all), axis=(0, 2)))))
        print("OWA: ", owa_m4(freq,
                              np.nanmean(np.stack(smape_all), axis=(0, 2)),
                              np.nanmean(np.stack(mase_all), axis=(0, 2))))
Ejemplo n.º 2
0
                    mase_m4(train, test, forecast_naive2, m=m),
                    mase_m4(train, test, forecast_ses, m=m),
                    mase_m4(train, test, forecast_holt, m=m),
                    mase_m4(train, test, forecast_damp, m=m),
                    mase_m4(train, test, forecast_comb, m=m),
                ]))
            smape_all.append(
                np.vstack([
                    smape_m4(test, forecast_naiveSeason),
                    smape_m4(test, forecast_naive),
                    smape_m4(test, forecast_naive2),
                    smape_m4(test, forecast_ses),
                    smape_m4(test, forecast_holt),
                    smape_m4(test, forecast_damp),
                    smape_m4(test, forecast_comb),
                ]))
        pkl.dump(mase_all, open("baseline_mase_" + cat + ".pkl", "wb"))
        pkl.dump(smape_all, open("baseline_smape_" + cat + ".pkl", "wb"))
        print(
            "MASE; sNaive: {:.3f}, sNaive+Drift: {:.3f}, Naive2: {:.3f}, SES: {:.3f}, Holt: {:.3f}, "
            "Damped: {:.3f}, Comb: {:.3f}".format(
                *tuple(np.nanmean(np.stack(mase_all), axis=(0, 2)))))
        print(
            "sMAPE; sNaive: {:.3f}, sNaive+Drift: {:.3f}, Naive2: {:.3f}, SES: {:.3f}, Holt: {:.3f}, "
            "Damped: {:.3f}, Comb: {:.3f}".format(
                *tuple(np.nanmean(np.stack(smape_all), axis=(0, 2)))))
        print(
            "OWA: ",
            owa_m4(cat, np.nanmean(np.stack(smape_all), axis=(0, 2)),
                   np.nanmean(np.stack(mase_all), axis=(0, 2))))
Ejemplo n.º 3
0
                groe_owa(train, ets_model, m, max(5, len(train) - len(test)),
                         int(np.floor(len(test) / 6)), 6)]

            if not np.all(np.array(criterion) > 0):
                fallback(mase_all, smape_all, train, test, m)
                continue

            Score = 1 / np.array(criterion)
            pesos = Score / Score.sum()

            groe_ensemble = 0
            for prediction, weight in zip(model_predictions, pesos):
                groe_ensemble = prediction * weight + groe_ensemble
            if (groe_ensemble.univariate_values() < 0).any():
                indices = test.time_index[groe_ensemble.univariate_values() < 0]
                groe_ensemble = groe_ensemble.update(indices, np.zeros(len(indices)))

            mase_all.append(np.vstack([
                mase_m4(train, test, groe_ensemble, m=m),
            ]))
            smape_all.append(np.vstack([
                smape_m4(test, groe_ensemble),
            ]))
        print("MASE GROE: {:.3f}".format(np.nanmean(np.stack(mase_all), axis=(0, 2))))
        print("sMAPE GROE: {:.3f}".format(np.nanmean(np.stack(smape_all), axis=(0, 2))))
        print("OWA GROE: {:.3f}".format(owa_m4(freq,
                                               np.nanmean(np.stack(smape_all), axis=(0, 2)),
                                               np.nanmean(np.stack(mase_all), axis=(0, 2)))))
        pickle.dump(mase_all, open("groeR_mase_" + freq + ".pkl", "wb"))
        pickle.dump(smape_all, open("groeR_smape_" + freq + ".pkl", "wb"))