sklearn.model_selection.TimeSeriesSplit

class sklearn.model_selection.TimeSeriesSplit

Validador cruzado de series de tiempo

Proporciona índices de entrenamiento/prueba para separar muestras de datos de series temporales que se observan en intervalos de tiempo fijos, en conjuntos de entrenamiento/prueba. En cada separación, los índices de prueba deben ser mayores que los anteriores, por lo que no es apropiado barajar en el validador cruzado.

Este objeto de validación cruzada es una variación de KFold. En la kª división, devuelve los primeros k pliegues como conjunto de entrenamiento y el (k+1)º pliegue como conjunto de prueba.

Ten en cuenta que, a diferencia de los métodos de validación cruzada estándar, los conjuntos de entrenamiento sucesivos son superconjuntos de los anteriores.

Más información en el Manual de usuario.

Nuevo en la versión 0.18.

Parámetros
n_splitsentero, default=5

Número de separaciones. Debe ser al menos 2.

Distinto en la versión 0.22: El valor predeterminado de n_splits ha cambiado de 3 a 5.

max_train_sizeentero, default=None

Tamaño máximo para un único conjunto de entrenamiento.

test_sizeentero, default=None

Se utiliza para limitar el tamaño del conjunto de prueba. Por defecto, n_samples // (n_splits + 1), que es el valor máximo permitido con gap=0.

Nuevo en la versión 0.24.

gapentero, default=0

Número de muestras a excluir del final de cada conjunto de entrenamiento antes del conjunto de prueba.

Nuevo en la versión 0.24.

Notas

El conjunto de entrenamiento tiene un tamaño i * n_samples // (n_splits + 1) + n_samples % (n_splits + 1) en la i``ª separación, con un conjunto de prueba de tamaño ``n_samples//(n_splits + 1) por defecto, donde n_samples es el número de muestras.

Ejemplos

>>> 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 train_index, test_index in tscv.split(X):
...     print("TRAIN:", train_index, "TEST:", test_index)
...     X_train, X_test = X[train_index], X[test_index]
...     y_train, y_test = y[train_index], y[test_index]
TRAIN: [0] TEST: [1]
TRAIN: [0 1] TEST: [2]
TRAIN: [0 1 2] TEST: [3]
TRAIN: [0 1 2 3] TEST: [4]
TRAIN: [0 1 2 3 4] TEST: [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 train_index, test_index in tscv.split(X):
...    print("TRAIN:", train_index, "TEST:", test_index)
...    X_train, X_test = X[train_index], X[test_index]
...    y_train, y_test = y[train_index], y[test_index]
TRAIN: [0 1 2 3 4 5] TEST: [6 7]
TRAIN: [0 1 2 3 4 5 6 7] TEST: [8 9]
TRAIN: [0 1 2 3 4 5 6 7 8 9] TEST: [10 11]
>>> # Add in a 2 period gap
>>> tscv = TimeSeriesSplit(n_splits=3, test_size=2, gap=2)
>>> for train_index, test_index in tscv.split(X):
...    print("TRAIN:", train_index, "TEST:", test_index)
...    X_train, X_test = X[train_index], X[test_index]
...    y_train, y_test = y[train_index], y[test_index]
TRAIN: [0 1 2 3] TEST: [6 7]
TRAIN: [0 1 2 3 4 5] TEST: [8 9]
TRAIN: [0 1 2 3 4 5 6 7] TEST: [10 11]

Métodos

get_n_splits

Devuelve el número de iteraciones divididas en el validador cruzado

split

Genera índices para dividir los datos en conjunto de entrenamiento y de prueba.

get_n_splits()

Devuelve el número de iteraciones divididas en el validador cruzado

Parámetros
Xobjeto

Siempre ignorado, existe por compatibilidad.

yobjeto

Siempre ignorado, existe por compatibilidad.

groupsobjeto

Siempre ignorado, existe por compatibilidad.

Devuelve
n_splitsint

Devuelve el número de iteraciones divididas en el validador cruzado.

split()

Genera índices para dividir los datos en conjunto de entrenamiento y de prueba.

Parámetros
Xarray-like de forma (n_samples, n_features)

Datos de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

yarray-like de forma (n_samples,)

Siempre ignorado, existe por compatibilidad.

groupsarray-like de forma (n_samples,)

Siempre ignorado, existe por compatibilidad.

Produce
trainndarray

El entrenamiento establece los índices para esa división.

testndarray

Los índices del conjunto de pruebas para esa separación.

Ejemplos con sklearn.model_selection.TimeSeriesSplit