Spec-Zone.ru › scikit-learn

TimeSeriesSplit

classsklearn.model_selection.TimeSeriesSplit(n_splits=5, *, max_train_size=None, test_size=None, gap=0)[исходный код]

Кросс-валидатор для временных рядов.

Предоставляет индексы обучающей и тестовой выборок для разделения упорядоченных по времени данных, когда другие методы кросс-валидации неприменимы, поскольку они приводят к обучению на будущих данных и оценке на прошлых данных. Чтобы обеспечить сопоставимость метрик между фолдами, расстояния между выборками должны быть одинаковыми. При выполнении этого условия каждый тестовый набор охватывает одинаковый временной интервал, а размер обучающего набора увеличивается за счёт данных из предыдущих разбиений.

Этот объект кросс-валидации представляет собой разновидность KFold. При k-м разбиении он возвращает первые k фолдов в качестве обучающего набора, а (k+1)-й фолд — в качестве тестового набора.

Обратите внимание, что, в отличие от стандартных методов кросс-валидации, последующие обучающие наборы являются надмножествами предыдущих.

Подробнее см. в руководстве пользователя.

Визуализацию поведения кросс-валидации и сравнение распространённых методов разбиения scikit-learn см. в разделе Визуализация поведения кросс-валидации в scikit-learn

Добавлено в версии 0.18.

Параметры:
n_splitsint, default=5

Количество разбиений. Должно быть не меньше 2.

Изменено в версии 0.22: значение по умолчанию n_splits изменено с 3 на 5.

max_train_sizeint, default=None

Максимальный размер отдельного обучающего набора.

test_sizeint, default=None

Используется для ограничения размера тестового набора. По умолчанию используется n_samples // (n_splits + 1) — максимально допустимое значение при gap=0.

Добавлено в версии 0.24.

gapint, default=0

Количество выборок, исключаемых из конца каждого обучающего набора перед тестовым набором.

Добавлено в версии 0.24.

Примечания

Размер обучающего набора в i-м разбиении равен i * n_samples // (n_splits + 1) + n_samples % (n_splits + 1), а размер тестового набора по умолчанию — n_samples//(n_splits + 1), где n_samples — количество выборок. Обратите внимание, что эта формула применима только при использовании значений по умолчанию для test_size и max_train_size.

Примеры

>>> import numpy as np
>>> from sklearn.model_selection import TimeSeriesSplit
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> tscv = TimeSeriesSplit()
>>> print(tscv)
TimeSeriesSplit(gap=0, max_train_size=None, n_splits=5, test_size=None)
>>> for i, (train_index, test_index) in enumerate(tscv.split(X)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"  Test:  index={test_index}")
Fold 0:
  Train: index=[0]
  Test:  index=[1]
Fold 1:
  Train: index=[0 1]
  Test:  index=[2]
Fold 2:
  Train: index=[0 1 2]
  Test:  index=[3]
Fold 3:
  Train: index=[0 1 2 3]
  Test:  index=[4]
Fold 4:
  Train: index=[0 1 2 3 4]
  Test:  index=[5]
>>> # Fix test_size to 2 with 12 samples
>>> X = np.random.randn(12, 2)
>>> y = np.random.randint(0, 2, 12)
>>> tscv = TimeSeriesSplit(n_splits=3, test_size=2)
>>> for i, (train_index, test_index) in enumerate(tscv.split(X)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"  Test:  index={test_index}")
Fold 0:
  Train: index=[0 1 2 3 4 5]
  Test:  index=[6 7]
Fold 1:
  Train: index=[0 1 2 3 4 5 6 7]
  Test:  index=[8 9]
Fold 2:
  Train: index=[0 1 2 3 4 5 6 7 8 9]
  Test:  index=[10 11]
>>> # Add in a 2 period gap
>>> tscv = TimeSeriesSplit(n_splits=3, test_size=2, gap=2)
>>> for i, (train_index, test_index) in enumerate(tscv.split(X)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"  Test:  index={test_index}")
Fold 0:
  Train: index=[0 1 2 3]
  Test:  index=[6 7]
Fold 1:
  Train: index=[0 1 2 3 4 5]
  Test:  index=[8 9]
Fold 2:
  Train: index=[0 1 2 3 4 5 6 7]
  Test:  index=[10 11]

Более подробный пример см. в разделе Создание признаков, связанных со временем.

get_metadata_routing()[исходный код]

Получить маршрутизацию метаданных этого объекта.

Описание работы механизма маршрутизации см. в руководстве пользователя.

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий информацию о маршрутизации.

get_n_splits(X=None, y=None, groups=None)[исходный код]

Возвращает количество итераций разбиения, заданное параметром n_splits при создании кросс-валидатора.

Параметры:
Xarray-like of shape (n_samples, n_features), default=None

Всегда игнорируется; параметр существует для совместимости с API.

yarray-like of shape (n_samples,), default=None

Всегда игнорируется; параметр существует для совместимости с API.

groupsarray-like of shape (n_samples,), default=None

Всегда игнорируется; параметр существует для совместимости с API.

Возвращает:
n_splitsint

Возвращает количество итераций разбиения в кросс-валидаторе.

split(X, y=None, groups=None)[исходный код]

Создать индексы для разделения данных на обучающий и тестовый наборы.

Параметры:
Xarray-like of shape (n_samples, n_features)

Обучающие данные, где n_samples — количество выборок, а n_features — количество признаков.

yarray-like of shape (n_samples,), default=None

Всегда игнорируется; параметр существует для совместимости с API.

groupsarray-like of shape (n_samples,), default=None

Всегда игнорируется; параметр существует для совместимости с API.

Возвращает значения:
trainndarray

Индексы обучающего набора для данного разбиения.

testndarray

Индексы тестового набора для данного разбиения.

Примеры из галереи

Создание признаков, связанных со временем

Признаки с лагами для прогнозирования временных рядов

Признаки в деревьях с градиентным бустингом на гистограммах

Модели на основе L1 для разреженных сигналов

Визуализация поведения кросс-валидации в scikit-learn

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.model_selection.TimeSeriesSplit.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API