Back to models
Splitter

TemporalTrainTestSplitter

Temporal train-test splitter, based on sample sizes of train or test set.

Splits time series into a single, temporally ordered train/test split. The train and test sets are contiguous blocks of consecutive iloc positions, with sizes determined by train_size and test_size. If the original time index is irregular, the split is still based on consecutive positions in the data, not on equally spaced time intervals.

If the time points in the data are \((t_1, t_2, \ldots, t_N)\), let \(m\) be the number of training positions and \(q\) be the number of test positions after resolving train_size and test_size. Fractional train_size values are rounded down to \(m\), while fractional test_size values are rounded up to \(q\).

With anchor="start", the split is taken from the beginning of the series:

\[train = (t_1, \ldots, t_m), \quad test = (t_{m+1}, \ldots, t_{m+q}).\]

With anchor="end", the split is taken from the end of the series:

\[train = (t_{N-q-m+1}, \ldots, t_{N-q}), \quad test = (t_{N-q+1}, \ldots, t_N).\]

If only test_size is supplied, anchor is treated as "end" and the training set is the complement before the test set. If only train_size is supplied, anchor is treated as "start" and the test set is the complement after the training set. If neither is supplied, test_size defaults to 0.25.

This splitter yields exactly one split.

If the data contains multiple time series (Panel or Hierarchical), fractions and train-test sets will be computed per individual time series.

Quickstart

python
from sktime.split.temporal_train_test_split import TemporalTrainTestSplitter

estimator = TemporalTrainTestSplitter(train_size=None, test_size=None, anchor='start')

Parameters(3)

test_sizefloat, int or None, optional (default=None)

If float, must be between 0.0 and 1.0, and is interpreted as the proportion of the dataset to include in the test split. Proportions are rounded to the next higher integer count of samples (ceil). If int, is interpreted as total number of test samples. If None, the value is set to the complement of the train size. If train_size is also None, it will be set to 0.25.

train_sizefloat, int, or None, (default=None)
If float, must be between 0.0 and 1.0, and is interpreted as the proportion of the dataset to include in the train split. Proportions are rounded to the next lower integer count of samples (floor). If int, is interpreted as total number of train samples. If None, the value is set to the complement of the test size.
anchorstr, “start” (default) or “end”
determines behaviour if train and test sizes do not sum up to all data if “start”, cuts train and test set from start of available series if “end”, cuts train and test set from end of available series

Examples

>>> import numpy as np
>>> from sktime.split import TemporalTrainTestSplitter
>>> ts = np. arange (10)
>>> splitter = TemporalTrainTestSplitter (test_size = 0.3)
>>> list (splitter. split (ts)) [(array([0, 1, 2, 3, 4, 5, 6]), array([7, 8, 9]))]