def test_train_eval_test(self): log.info("testing: Train Eval Test") m = NeuralProphet( n_lags=10, n_forecasts=3, ar_sparsity=0.1, epochs=3, batch_size=32, ) df = pd.read_csv(PEYTON_FILE, nrows=95) df = df_utils.check_dataframe(df, check_y=False) df = m._handle_missing_data(df, freq="D", predicting=False) df_train, df_test = m.split_df(df, freq="D", valid_p=0.1, inputs_overbleed=True) metrics = m.fit(df_train, freq="D", validate_each_epoch=True, valid_p=0.1) metrics = m.fit(df_train, freq="D") val_metrics = m.test(df_test) log.debug("Metrics: train/eval: \n {}".format( metrics.to_string(float_format=lambda x: "{:6.3f}".format(x)))) log.debug("Metrics: test: \n {}".format( val_metrics.to_string(float_format=lambda x: "{:6.3f}".format(x))))
def check_split(df_in, df_len_expected, n_lags, n_forecasts, freq, p=0.1): m = NeuralProphet( n_lags=n_lags, n_forecasts=n_forecasts, ) df_in = df_utils.check_dataframe(df_in, check_y=False) df_in = m._handle_missing_data(df_in, freq=freq, predicting=False) assert df_len_expected == len(df_in) total_samples = len(df_in) - n_lags - 2 * n_forecasts + 2 df_train, df_test = m.split_df(df_in, freq=freq, valid_p=0.1, inputs_overbleed=True) n_train = len(df_train) - n_lags - n_forecasts + 1 n_test = len(df_test) - n_lags - n_forecasts + 1 assert total_samples == n_train + n_test n_test_expected = max(1, int(total_samples * p)) n_train_expected = total_samples - n_test_expected assert n_train == n_train_expected assert n_test == n_test_expected