def run_example(): dataset = get_dataset("electricity") serialize_path = Path("GluonTSTabularPredictor") estimator = TabularEstimator( freq="H", prediction_length=24, time_limit=600, # ten minutes for training disable_auto_regression= True, # makes prediction faster, but potentially less accurate last_k_for_val= 24, # split the last 24 targets from each time series to be the validation data quantiles_to_predict=[0.1, 0.5, 0.9], ) n_train = 5 training_data = list(islice(dataset.train, n_train)) predictor = estimator.train(training_data=training_data) os.makedirs(serialize_path, exist_ok=True) predictor.serialize(serialize_path) predictor = None # the quantiles_to_predict parameters should be List[str] type predictor = Predictor.deserialize(serialize_path) forecasts = list(predictor.predict(training_data)) print(forecasts)
def run_example(): dataset = get_dataset("electricity") serialize_path = Path("GluonTSTabularPredictor") estimator = TabularEstimator( freq="H", prediction_length=24, time_limit=10, # two minutes for training disable_auto_regression=True, # makes prediction faster, but potentially less accurate last_k_for_val=24, # split the last 24 targets from each time series to be the validation data quantiles_to_predict=None, ) n_train = 5 training_data = list(islice(dataset.train, n_train)) predictor = estimator.train(training_data=training_data) os.makedirs(serialize_path, exist_ok=True) predictor.serialize(serialize_path) predictor = None predictor = Predictor.deserialize(serialize_path) forecasts = list(predictor.predict(training_data)) for entry, forecast in zip(training_data, forecasts): ts = to_pandas(entry) plt.figure() plt.plot(ts[-7 * predictor.prediction_length :], label="target") forecast.plot() plt.show()
def run_example(): dataset = get_dataset("electricity") estimator = TabularEstimator( freq="H", prediction_length=24, time_limits=2 * 60, # two minutes for training disable_auto_regression= True, # makes prediction faster, but potentially less accurate ) n_train = 5 training_data = list(islice(dataset.train, n_train)) predictor = estimator.train(training_data=training_data, ) forecasts = list(predictor.predict(training_data)) for entry, forecast in zip(training_data, forecasts): ts = to_pandas(entry) plt.figure() plt.plot(ts[-7 * predictor.prediction_length:], label="target") forecast.plot() plt.show()
def test_tabular_estimator( dataset, freq, prediction_length: int, lag_indices: List[int], disable_auto_regression: bool, last_k_for_val: int, validation_data: ListDataset, ): estimator = TabularEstimator( freq=freq, prediction_length=prediction_length, lag_indices=lag_indices, time_limit=10, disable_auto_regression=disable_auto_regression, last_k_for_val=last_k_for_val, ) def check_consistency(entry, f1, f2): ts = to_pandas(entry) start_timestamp = ts.index[-1] + pd.tseries.frequencies.to_offset(freq) assert f1.samples.shape == (1, prediction_length) assert f1.start_date == start_timestamp assert f2.samples.shape == (1, prediction_length) assert f2.start_date == start_timestamp assert np.allclose(f1.samples, f2.samples) with tempfile.TemporaryDirectory() as path: predictor = estimator.train(dataset, validation_data=validation_data) predictor.serialize(Path(path)) predictor = None predictor = Predictor.deserialize(Path(path)) assert not predictor.auto_regression or any( l < prediction_length for l in predictor.lag_indices ) assert predictor.batch_size > 1 forecasts_serial = list(predictor._predict_serial(dataset)) forecasts_batch = list(predictor.predict(dataset)) for entry, f1, f2 in zip(dataset, forecasts_serial, forecasts_batch): check_consistency(entry, f1, f2) if not predictor.auto_regression: forecasts_batch_autoreg = list( predictor._predict_batch_autoreg(dataset) ) for entry, f1, f2 in zip( dataset, forecasts_serial, forecasts_batch_autoreg ): check_consistency(entry, f1, f2)
def _get_estimator(self): return TabularEstimator( freq=self.freq, prediction_length=self.prediction_length, time_limit=self.params_aux["time_limit"], last_k_for_val=self.prediction_length, )