forecaster.base

forecaster.base

ForecasterBase class.

This module contains the base class for all forecasters in spotforecast2_safe and spotforecast. All forecasters should specify all the parameters that can be set at the class level in their init.

Examples

import numpy as np
import pandas as pd
from sklearn.linear_model import Ridge

from spotforecast2_safe.forecaster.base import ForecasterBase

class MyForecaster(ForecasterBase):
    def __init__(self, estimator):
        self.estimator = estimator
        self.__spotforecast_tags__ = {'hide_lags': True}
    def create_train_X_y(self, y, exog=None):
        return pd.DataFrame(), pd.Series(dtype=float)
    def fit(self, y, exog=None):
        pass
    def predict(self, steps, last_window=None, exog=None):
        return pd.Series(np.zeros(steps))
    def set_params(self, params):
        pass

forecaster = MyForecaster(estimator=Ridge())
print(repr(forecaster))
<__main__.MyForecaster object at 0x7ff35cb12510>

Classes

Name Description
ForecasterBase Base class for all forecasters in spotforecast2.

ForecasterBase

forecaster.base.ForecasterBase()

Base class for all forecasters in spotforecast2.

All forecasters should specify all the parameters that can be set at the class level in their init.

Attributes

Name Type Description
spotforecast_tags Dictionary with forecaster tags that characterize the behavior of the forecaster.

Examples

import inspect

from spotforecast2_safe.forecaster.base import ForecasterBase

abstract_methods = [
    m[0] for m in inspect.getmembers(ForecasterBase, predicate=inspect.isabstract)
]
print(abstract_methods)
[]

Methods

Name Description
create_train_X_y Create training matrices from univariate time series and exogenous variables.
fit Training Forecaster.
get_tags Return the tags that characterize the behavior of the forecaster.
predict Predict n steps ahead.
set_lags Set new value to the attribute lags.
set_params Set new values to the parameters of the scikit-learn model stored in the forecaster.
set_window_features Set new value to the attribute window_features.
summary Show forecaster information.
create_train_X_y
forecaster.base.ForecasterBase.create_train_X_y(y, exog=None)

Create training matrices from univariate time series and exogenous variables.

Parameters
Name Type Description Default
y pd.Series Training time series. required
exog pd.Series | pd.DataFrame | None Exogenous variable(s) included as predictor(s). Must have the same number of observations as y and their indexes must be aligned. Default is None. None
Returns
Name Type Description
pd.DataFrame Tuple containing X_train (training values/predictors with shape
pd.Series (len(y) - max_lag, len(lags))) and y_train (target values of the
tuple[pd.DataFrame, pd.Series] time series related to each row of X_train with shape (len(y) - max_lag,)).
Examples
import numpy as np
import pandas as pd
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive

forecaster = ForecasterRecursive(estimator=Ridge(), lags=3)
y = pd.Series(np.arange(10), name='y')
X_train, y_train = forecaster.create_train_X_y(y)
print(X_train.head(2))
print(y_train.head(2))
   lag_1  lag_2  lag_3
3      2      1      0
4      3      2      1
3    3
4    4
Name: y, dtype: int64
fit
forecaster.base.ForecasterBase.fit(y, exog=None)

Training Forecaster.

Parameters
Name Type Description Default
y pd.Series Training time series. required
exog pd.Series | pd.DataFrame | None Exogenous variable(s) included as predictor(s). Must have the same number of observations as y and their indexes must be aligned so that y[i] is regressed on exog[i]. Default is None. None
Returns
Name Type Description
None None
Examples
import numpy as np
import pandas as pd
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive

forecaster = ForecasterRecursive(estimator=Ridge(), lags=3)
y = pd.Series(np.arange(10), name='y')
forecaster.fit(y)
print(forecaster.is_fitted)
True
get_tags
forecaster.base.ForecasterBase.get_tags()

Return the tags that characterize the behavior of the forecaster.

Returns
Name Type Description
dict[str, Any] Dictionary with forecaster tags describing behavior and capabilities.
Examples
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive

forecaster = ForecasterRecursive(estimator=Ridge(), lags=3)
tags = forecaster.get_tags()
print(tags['forecaster_task'])
regression
predict
forecaster.base.ForecasterBase.predict(steps, last_window=None, exog=None)

Predict n steps ahead.

Parameters
Name Type Description Default
steps int Number of steps to predict. required
last_window pd.Series | pd.DataFrame | None Series values used to create the predictors (lags) needed in the first iteration of the prediction (t + 1). If None, the values stored in last_window are used to calculate the initial predictors, and the predictions start right after training data. Default is None. None
exog pd.Series | pd.DataFrame | None Exogenous variable(s) included as predictor(s). Default is None. None
Returns
Name Type Description
pd.Series Predicted values as a pandas Series.
Examples
import numpy as np
import pandas as pd
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive

forecaster = ForecasterRecursive(estimator=Ridge(), lags=3)
y = pd.Series(np.arange(10), name='y')
forecaster.fit(y)
print(forecaster.predict(steps=3))
10     9.952941
11    10.925675
12    11.889426
Name: pred, dtype: float64
set_lags
forecaster.base.ForecasterBase.set_lags(lags=None)

Set new value to the attribute lags.

Attributes max_lag and window_size are also updated.

Parameters
Name Type Description Default
lags int | list[int] | np.ndarray[int] | range[int] | None Lags used as predictors. Index starts at 1, so lag 1 is equal to t-1. If int: include lags from 1 to lags (included). If list, 1d numpy ndarray, or range: include only lags present in lags, all elements must be int. If None: no lags are included as predictors. Default is None. None
Returns
Name Type Description
None None
Examples
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive

forecaster = ForecasterRecursive(estimator=Ridge(), lags=3)
forecaster.set_lags(lags=5)
print(forecaster.lags)
[1 2 3 4 5]
set_params
forecaster.base.ForecasterBase.set_params(params)

Set new values to the parameters of the scikit-learn model stored in the forecaster.

Parameters
Name Type Description Default
params dict[str, object] Parameters values dictionary. required
Returns
Name Type Description
None None
Examples
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive

forecaster = ForecasterRecursive(estimator=Ridge(alpha=1.0), lags=3)
forecaster.set_params({'estimator__alpha': 0.5})
print(forecaster.estimator.alpha)
0.5
set_window_features
forecaster.base.ForecasterBase.set_window_features(window_features=None)

Set new value to the attribute window_features.

Attributes max_size_window_features, window_features_names, window_features_class_names and window_size are also updated.

Parameters
Name Type Description Default
window_features object | list[object] | None Instance or list of instances used to create window features. Window features are created from the original time series and are included as predictors. Default is None. None
Returns
Name Type Description
None None
Examples
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive
from spotforecast2_safe.preprocessing import RollingFeatures

forecaster = ForecasterRecursive(estimator=Ridge(), lags=3)
window_feat = RollingFeatures(stats='mean', window_sizes=3)
forecaster.set_window_features(window_features=window_feat)
print(forecaster.window_features)
[<spotforecast2_safe.preprocessing.rolling.RollingFeatures object at 0x7ff35cb127b0>]
summary
forecaster.base.ForecasterBase.summary()

Show forecaster information.

Returns
Name Type Description
None None
Examples
from sklearn.linear_model import Ridge
from spotforecast2_safe.forecaster.recursive import ForecasterRecursive

forecaster = ForecasterRecursive(estimator=Ridge(), lags=3)
forecaster.summary()
=================== 
ForecasterRecursive 
=================== 
Estimator: Ridge 
Lags: [1 2 3] 
Window features: None 
Window size: 3 
Series name: None 
Exogenous included: False 
Exogenous names: None 
Transformer for y: None 
Transformer for exog: None 
Weight function included: False 
Differentiation order: None 
Training range: None 
Training index type: None 
Training index frequency: None 
Estimator parameters: {'alpha': 1.0, 'copy_X': True, 'fit_intercept': True, 'max_iter': None, 'positive': False, 'random_state': None, 'solver': 'auto', 'tol': 0.0001} 
fit_kwargs: {} 
Creation date: 2026-05-19 22:16:49 
Last fit date: None 
spotforecast version: 12.0.0 
Python version: 3.13.13 
Forecaster id: None