NBeatsForecaster¶
- class NBeatsForecaster(window, horizon=1, backcast_loss_weight=0.5, batch_size=32, n_epochs=100, verbose=0, optimizer=None, metrics='mae', loss='mse', callbacks=None, random_state=None, axis=0, last_file_name='last_model', save_best_model=False, save_last_model=False, save_init_model=False, best_file_name='best_model', init_file_name='init_model', file_path='./', stacks=None, num_blocks_per_stack=2, units=30, num_trend_coefficients=3, num_seasonal_coefficients=5, num_generic_coefficients=7, share_weights=True, share_coefficients=True)[source]¶
Bases:
BaseDeepForecaster,SeriesToSeriesForecastingMixinN-BEATS deep learning forecaster.
Wraps
NBeatsNetworkinto the aeon forecasting API. Each block produces a backcast (input reconstruction) and a forecast (future prediction). Both heads are trained simultaneously; only the forecast is returned at inference time. Based on [1].- Parameters:
- windowint
Lookback window size.
- horizonint, default=1
Number of steps to forecast. Fixed at construction time.
- backcast_loss_weightfloat, default=0.5
Loss weight for the backcast head relative to the forecast head (1.0).
- batch_sizeint, default=32
- n_epochsint, default=100
- verboseint, default=0
- optimizertf.keras.optimizers.Optimizer or None, default=None
Defaults to Adam.
- metricsstr or list, default=”mae”
Metrics tracked on the forecast head during training.
- lossstr or tf.keras.losses.Loss, default=”mse”
Applied to both forecast and backcast outputs.
- callbackslist or None, default=None
- random_stateint or None, default=None
- axisint, default=0
- last_file_namestr, default=”last_model”
- save_best_modelbool, default=False
- save_last_modelbool, default=False
- save_init_modelbool, default=False
- best_file_namestr, default=”best_model”
- init_file_namestr, default=”init_model”
- file_pathstr, default=”./”
- stackslist of str or None, default=None
Stack types: “trend”, “seasonality”, or “generic”. Defaults to [“trend”, “seasonality”].
- num_blocks_per_stackint, default=2
- unitsint, default=30
- num_trend_coefficientsint, default=3
- num_seasonal_coefficientsint, default=5
- num_generic_coefficientsint, default=7
- share_weightsbool, default=True
- share_coefficientsbool, default=True
Notes
Capabilities ¶ Missing Values
No
Multithreading
No
Univariate
Yes
Multivariate
No
Horizon
Yes
Exogenous
No
References
[1]Oreshkin et al. (2019). N-BEATS: Neural basis expansion analysis for interpretable time series forecasting. arXiv:1905.10437.
Examples
>>> from aeon.datasets import load_airline >>> from aeon.forecasting.deep_learning import NBeatsForecaster >>> y = load_airline() >>> forecaster = NBeatsForecaster(window=24, horizon=12, n_epochs=10) >>> forecaster.fit(y) NBeatsForecaster(...) >>> pred = forecaster.predict(y)
Methods
build_model(input_shape)Build and compile the N-BEATS Keras model.
clone([random_state])Obtain a clone of the object with the same hyperparameters.
fit(y[, exog, axis])Fit forecaster to series y.
forecast(y[, exog, axis])Forecast the next horizon steps ahead of
y.get_class_tag(tag_name[, raise_error, ...])Get tag value from estimator class (only class tags).
Get class tags from estimator class and all its parent classes.
get_fitted_params([deep])Get fitted parameters.
get_params([deep])Get parameters for this estimator.
get_tag(tag_name[, raise_error, ...])Get tag value from estimator class.
get_tags()Get tags from estimator.
load_model(model_path)Load a pre-trained keras model instead of fitting.
predict(y[, exog, axis])Predict the next horizon steps ahead.
reset([keep])Reset the object to a clean post-init state.
save_last_model_to_file([file_path])Save the last epoch of the trained deep learning model.
series_to_series_forecast(y, prediction_horizon)Forecast
prediction_horizonusing a series iterative approach.set_fit_request(*[, axis, exog])Configure whether metadata should be requested to be passed to the
fitmethod.set_params(**params)Set the parameters of this estimator.
set_predict_request(*[, axis, exog])Configure whether metadata should be requested to be passed to the
predictmethod.set_tags(**tag_dict)Set dynamic tags to given values.
summary()Summary function to return the losses/metrics for model fit.
- build_model(input_shape)[source]¶
Build and compile the N-BEATS Keras model.
Declares both
"forecast"(shape(batch, horizon)) and"backcast"(shape(batch, window)) as named outputs so the full graph is reachable and both heads receive direct gradients.- Parameters:
- input_shapetuple
(window, 1)— channel dim satisfies NBeatsNetwork’s guard.
- Returns:
- modeltf.keras.Model
- clone(random_state=None)[source]¶
Obtain a clone of the object with the same hyperparameters.
A clone is a different object without shared references, in post-init state. This function is equivalent to returning
sklearn.cloneofself. Equal in value totype(self)(**self.get_params(deep=False)).- Parameters:
- random_stateint, RandomState instance, or None, default=None
Sets the random state of the clone. If
None, the random state is not set. Ifint,random_stateis the seed used by the random number generator. IfRandomStateinstance,random_stateis the random number generator.
- Returns:
- estimatorobject
Instance of
type(self), clone of self (see above)
- fit(y, exog=None, axis=1)[source]¶
Fit forecaster to series y.
Fit a forecaster to predict self.horizon steps ahead using y.
- Parameters:
- ynp.ndarray
A time series on which to learn a forecaster to predict horizon ahead.
- exognp.ndarray, default =None
Optional target-time exogenous values aligned with
y.
- Returns:
- self
Fitted BaseForecaster.
- forecast(y, exog=None, axis=1) float[source]¶
Forecast the next horizon steps ahead of
y.By default this is simply fit followed by predict.
- Parameters:
- ynp.ndarray
A time series to predict the next horizon value for. Must be of shape
(n_channels, n_timepoints)if a multivariate time series.- exognp.ndarray, default =None
Optional target-time exogenous values aligned with
y.
- Returns:
- float
single prediction self.horizon steps ahead of y.
- classmethod get_class_tag(tag_name, raise_error=True, tag_value_default=None)[source]¶
Get tag value from estimator class (only class tags).
- Parameters:
- tag_namestr
Name of tag value.
- raise_errorbool, default=True
Whether a
ValueErroris raised when the tag is not found.- tag_value_defaultany type, default=None
Default/fallback value if tag is not found and error is not raised.
- Returns:
- tag_value
Value of the
tag_nametag in cls. If not found, returns an error ifraise_errorisTrue, otherwise it returnstag_value_default.
- Raises:
- ValueError
if
raise_errorisTrueandtag_nameis not inself.get_tags().keys()
Examples
>>> from aeon.classification import DummyClassifier >>> DummyClassifier.get_class_tag("capability:multivariate") True
- classmethod get_class_tags()[source]¶
Get class tags from estimator class and all its parent classes.
- Returns:
- collected_tagsdict
Dictionary of tag name and tag value pairs. Collected from
_tagsclass attribute via nested inheritance. These are not overridden by dynamic tags set byset_tagsor class__init__calls.
- get_fitted_params(deep=True)[source]¶
Get fitted parameters.
- State required:
Requires state to be “fitted”.
- Parameters:
- deepbool, default=True
If
True, will return the fitted parameters for this estimator and contained subobjects that are estimators.
- Returns:
- fitted_paramsdict
Fitted parameter names mapped to their values.
- get_params(deep=True)¶
Get parameters for this estimator.
- Parameters:
- deepbool, default=True
If True, will return the parameters for this estimator and contained subobjects that are estimators.
- Returns:
- paramsdict
Parameter names mapped to their values.
- get_tag(tag_name, raise_error=True, tag_value_default=None)[source]¶
Get tag value from estimator class.
Includes dynamic and overridden tags.
- Parameters:
- tag_namestr
Name of tag to be retrieved.
- raise_errorbool, default=True
Whether a
ValueErroris raised when the tag is not found.- tag_value_defaultany type, default=None
Default/fallback value if tag is not found and error is not raised.
- Returns:
- tag_value
Value of the
tag_nametag in self. If not found, returns an error ifraise_errorisTrue, otherwise it returnstag_value_default.
- Raises:
- ValueError
if raise_error is
Trueandtag_nameis not inself.get_tags().keys()
Examples
>>> from aeon.classification import DummyClassifier >>> d = DummyClassifier() >>> d.get_tag("capability:multivariate") True
- get_tags()[source]¶
Get tags from estimator.
Includes dynamic and overridden tags.
- Returns:
- collected_tagsdict
Dictionary of tag name and tag value pairs. Collected from
_tagsclass attribute via nested inheritance and then any overridden and new tags from__init__orset_tags.
- load_model(model_path)[source]¶
Load a pre-trained keras model instead of fitting.
When calling this function, all functionalities can be used such as predict with the loaded model.
- Parameters:
- model_pathstr
Path to the saved model file including extension. Example: model_path=”path/to/file/best_model.keras”
- Returns:
- None
- predict(y, exog=None, axis=1) float[source]¶
Predict the next horizon steps ahead.
- Parameters:
- ynp.ndarray
A time series to predict the next horizon value for.
- exognp.ndarray, default =None
Optional exogenous values for the prediction target. For models fitted with exogenous variables, this should contain the exogenous values needed to make the next prediction.
- Returns:
- float
single prediction self.horizon steps ahead of y.
- reset(keep=None)[source]¶
Reset the object to a clean post-init state.
After a
self.reset()call,selfis equal or similar in value totype(self)(**self.get_params(deep=False)), assuming no other attributes were kept usingkeep.- Detailed behaviour:
- removes any object attributes, except:
hyper-parameters (arguments of
__init__) object attributes containing double-underscores, i.e., the string “__”
runs
__init__with current values of hyperparameters (result ofget_params)- Not affected by the reset are:
object attributes containing double-underscores class and object methods, class attributes any attributes specified in the
keepargument
- Parameters:
- keepNone, str, or list of str, default=None
If
None, all attributes are removed except hyperparameters. Ifstr, only the attribute with this name is kept. Iflistofstr, only the attributes with these names are kept.
- Returns:
- selfobject
Reference to self.
- Raises:
- TypeError
If ‘keep’ is not a string or a list of strings.
- save_last_model_to_file(file_path='./')[source]¶
Save the last epoch of the trained deep learning model.
- Parameters:
- file_pathstr, default=”./”
The directory where the model will be saved.
- Returns:
- None
- series_to_series_forecast(y, prediction_horizon, exog=None) ndarray[source]¶
Forecast
prediction_horizonusing a series iterative approach.This function implements a series-to-series forecasting strategy. The forecaster is trained to predict multiple steps ahead in one go, returning a series of predictions. This is done by fitting the model once and then predicting a series of length prediction_horizon.
- ynp.ndarray
The time series to make forecasts about. Must be of shape
(n_channels, n_timepoints)if a multivariate time series.- prediction_horizonint
The number of future time steps to forecast.
- exognp.ndarray, default =None
Optional exogenous time series data assumed to be aligned with y.
- Returns:
- np.ndarray
An array of shape (prediction_horizon,) containing the forecasts for each horizon.
- Raises:
- ValueError
if prediction_horizon less than 1.
- set_fit_request(*, axis: bool | None | str = '$UNCHANGED$', exog: bool | None | str = '$UNCHANGED$') NBeatsForecaster¶
Configure whether metadata should be requested to be passed to the
fitmethod.Note that this method is only relevant when this estimator is used as a sub-estimator within a meta-estimator and metadata routing is enabled with
enable_metadata_routing=True(seesklearn.set_config). Please check the User Guide on how the routing mechanism works.The options for each parameter are:
True: metadata is requested, and passed tofitif provided. The request is ignored if metadata is not provided.False: metadata is not requested and the meta-estimator will not pass it tofit.None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
- Parameters:
- axisstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
axisparameter infit.- exogstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
exogparameter infit.
- Returns:
- selfobject
The updated object.
- set_params(**params)¶
Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects (such as
Pipeline). The latter have parameters of the form<component>__<parameter>so that it’s possible to update each component of a nested object.- Parameters:
- **paramsdict
Estimator parameters.
- Returns:
- selfestimator instance
Estimator instance.
- set_predict_request(*, axis: bool | None | str = '$UNCHANGED$', exog: bool | None | str = '$UNCHANGED$') NBeatsForecaster¶
Configure whether metadata should be requested to be passed to the
predictmethod.Note that this method is only relevant when this estimator is used as a sub-estimator within a meta-estimator and metadata routing is enabled with
enable_metadata_routing=True(seesklearn.set_config). Please check the User Guide on how the routing mechanism works.The options for each parameter are:
True: metadata is requested, and passed topredictif provided. The request is ignored if metadata is not provided.False: metadata is not requested and the meta-estimator will not pass it topredict.None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
- Parameters:
- axisstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
axisparameter inpredict.- exogstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
exogparameter inpredict.
- Returns:
- selfobject
The updated object.