Back to models
Splitter

SlidingWindowSplitter

Sliding window splitter.

Split time series repeatedly into a fixed-length training and test window.

The training windows are defined by window_length and step_length, with windows starting at the first available time index in the data.

If the time points in the data are \((t_1, t_2, \ldots, t_N)\), the training windows will be all indices in the intervals

\[[t_1, t_1 + w), [t_1 + s, t_1 + s + w), [t_1 + 2s, t_1 + 2s + w), \ldots\]

where \(w\) is the window length and \(s\) is the step length.

The test windows are defined by forecasting horizons relative to the end of the training windows.

The test window will contain as many indices as there are forecasting horizons provided to the fh argument.

For a forecasting horizon \((h_1,\ldots,h_H)\), the test indices for the n-th split will consist of the indices \((k_n+h_1,\ldots,k_n+h_H)\), where \(k_n = t_1 + (n - 1) \cdot s + w\) is the end of the n-th training window.

The number of splits is determined by the total length of the time series, up until the last test window that lies within the observed time indices, i.e., the largest integer \(n\) such that \(k_n + h_H < t_N\).

For example for window_length = 5, step_length = 1 and fh = [1, 2, 3] here is a representation of the folds:

|-----------------------|
| * * * * * x x x - - - |
| - * * * * * x x x - - |
| - - * * * * * x x x - |
| - - - * * * * * x x x |

* = training fold.

x = test fold.

Quickstart

python
from sktime.split.slidingwindow import SlidingWindowSplitter

estimator = SlidingWindowSplitter(fh=1, window_length: int | float | Timedelta | timedelta | timedelta64 | DateOffset=10, step_length: int | Timedelta | timedelta | timedelta64 | DateOffset=1, initial_window: int | float | Timedelta | timedelta | timedelta64 | DateOffset | None=None, start_with_window: bool=True)

Parameters(5)

fhint, list or np.array, optional (default=1)

Forecasting horizon, determines the test window. Should be relative. The test window is determined by applying the forecasting horizon fh to the end of the training window.

window_lengthint or timedelta or pd.DateOffset, optional (default=10)
Window length of the training window.
step_lengthint or timedelta or pd.DateOffset, optional (default=1)
Step length between training windows.
initial_windowint or timedelta or pd.DateOffset, optional (default=None)

Window length of first window. If this is set to an integer, then the first training window will have size initial_window, and not window_length. This is useful for forecasting algorithms that require a minimum amount of training data. The test window size is unchanged, and determined by fh. All remaining folds, from the second onwards, will have size window_length.

start_with_windowbool, optional (default=True)
  • If True, starts with full training window.

  • If False, starts with empty training window. Same as setting initial_window=0.

Examples

>>> import numpy as np
>>> from sktime.split import SlidingWindowSplitter
>>> ts = np. arange (10)
>>> splitter = SlidingWindowSplitter (fh = [2, 4 ], window_length = 3, step_length = 2)
>>> list (splitter. split (ts)) [(array([0, 1, 2]), array([4, 6])), (array([2, 3, 4]), array([6, 8]))]