Adapters¶
Adapters provide integration with forecasting frameworks.
SkforecastAdapter¶
Integration with skforecast's ForecasterRecursiveMultiSeries (0.21+).
SkforecastAdapter(forecaster, series=None, exog=None)
¶
Bases: BaseAdapter
Adapter for skforecast :class:~skforecast.recursive.ForecasterRecursiveMultiSeries.
In skforecast 0.21+, the multi-series global forecaster was renamed from
ForecasterAutoregMultiSeries / ForecasterMultiSeries to
ForecasterRecursiveMultiSeries, and create_train_X_y requires the same
series object you passed to :meth:fit.
Provides integration with skforecast's multi-series forecasting models, extracting the training matrix and providing prediction capabilities for use with xeries explainers.
Example
from skforecast.recursive import ForecasterRecursiveMultiSeries from sklearn.ensemble import RandomForestRegressor
forecaster = ForecasterRecursiveMultiSeries( ... estimator=RandomForestRegressor(random_state=0), ... lags=24, ... ) forecaster.fit(series=series_wide_df)
adapter = SkforecastAdapter(forecaster, series=series_wide_df) X, y = adapter.get_training_data()
or: adapter = from_skforecast(forecaster, series=series_wide_df)¶
Initialize the skforecast adapter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
forecaster
|
Any
|
A fitted |
required |
series
|
DataFrame | dict[str, Series | DataFrame] | None
|
Training series in the same form as passed to |
None
|
exog
|
Series | DataFrame | dict[str, Series | DataFrame] | None
|
Optional exogenous variables, same as passed to |
None
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If forecaster is not fitted or is not a supported type. |
Source code in src/xeries/adapters/skforecast.py
n_lags
property
¶
Return the number of lag features in the training matrix.
get_feature_names()
¶
Get predictor column names (lags, window features, etc.).
get_lag_features()
¶
Get lag feature column names (e.g. lag_1, lag_2, ...).
get_series_column()
¶
Column or index level name used to identify the series in X.
skforecast 0.21+ typically adds _level_skforecast (ordinal codes).
Older stacked layouts use a MultiIndex level named level.
Source code in src/xeries/adapters/skforecast.py
get_series_ids()
¶
Unique series identifiers (decoded names when using ordinal encoding).
Source code in src/xeries/adapters/skforecast.py
get_training_data(series=None, exog=None, *, suppress_warnings=False)
¶
Extract training features (X) and target (y) from the forecaster.
skforecast's create_train_X_y requires the series argument (and optional
exog) matching what was used in fit. Pass series here or when
constructing :class:SkforecastAdapter.
The training matrix X has a MultiIndex with level (series id) and date.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
series
|
DataFrame | dict[str, Series | DataFrame] | None
|
Same |
None
|
exog
|
Series | DataFrame | dict[str, Series | DataFrame] | None
|
Same optional exog as in |
None
|
suppress_warnings
|
bool
|
Forwarded to skforecast. |
False
|
Returns:
| Type | Description |
|---|---|
tuple[DataFrame, Series]
|
Tuple of |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in src/xeries/adapters/skforecast.py
predict(X)
¶
Make predictions using the underlying estimator.
The input X is forwarded to the underlying estimator unchanged when it
is a :class:pandas.DataFrame so that estimators which were fitted with
feature names (e.g. LGBMRegressor, modern sklearn check_feature_names
machinery) can match their training schema and avoid the
"X does not have valid feature names, but ... was fitted with feature names"
warning. Non-DataFrame inputs are passed through untouched.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
DataFrame
|
Input features DataFrame (same structure as training X). |
required |
Returns:
| Type | Description |
|---|---|
NDArray[Any]
|
Array of predictions. |
Source code in src/xeries/adapters/skforecast.py
Helper Function¶
from_skforecast(forecaster, series=None, exog=None)
¶
Create a :class:SkforecastAdapter from a fitted forecaster.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
forecaster
|
Any
|
Fitted |
required |
series
|
DataFrame | dict[str, Series | DataFrame] | None
|
Training series (same as |
None
|
exog
|
Series | DataFrame | dict[str, Series | DataFrame] | None
|
Optional exog matching |
None
|
Returns:
| Type | Description |
|---|---|
SkforecastAdapter
|
SkforecastAdapter instance. |
Source code in src/xeries/adapters/skforecast.py
Base Adapter¶
BaseAdapter
¶
Bases: ABC
Abstract base class for forecasting framework adapters.
Adapters provide a consistent interface for extracting training data and making predictions from various forecasting frameworks.
get_feature_names()
abstractmethod
¶
Get the names of features used by the model.
Returns:
| Type | Description |
|---|---|
list[str]
|
List of feature names. |
get_series_column()
abstractmethod
¶
Get the name of the column/index level containing series identifiers.
Returns:
| Type | Description |
|---|---|
str
|
Name of the series identifier column. |
get_training_data(*args, **kwargs)
abstractmethod
¶
Extract training features (X) and target (y) from the forecaster.
Framework-specific adapters may require extra arguments (e.g. skforecast
needs the same series passed to fit).
Returns:
| Type | Description |
|---|---|
tuple[DataFrame, Series]
|
Tuple of (X, y) where X is a DataFrame with features and y is the target. |
Source code in src/xeries/adapters/base.py
predict(X)
abstractmethod
¶
Make predictions using the underlying model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
DataFrame
|
Input features DataFrame. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[Any]
|
Array of predictions. |