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
-
Индексы тестового набора для данного разбиения.
Примеры из галереи
© 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