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
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
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
fhto 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 notwindow_length. This is useful for forecasting algorithms that require a minimum amount of training data. The test window size is unchanged, and determined byfh. All remaining folds, from the second onwards, will have sizewindow_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]))]