sklearn.model_selection.StratifiedKFold

class sklearn.model_selection.StratifiedKFold

Validador cruzado K-Folds estratificado.

Proporciona índices de entrenamiento/prueba para dividir los datos en conjuntos de entrenamiento/prueba.

Este objeto de validación cruzada es una variación de KFold que devuelve pliegues estratificados. Los pliegues se hacen conservando el porcentaje de muestras para cada clase.

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

Parámetros
n_splitsint, default=5

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

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

shufflebool, default=False

Si se barajan las muestras de cada clase antes de dividirlas en lotes. Ten en cuenta que las muestras dentro de cada división no se revolverán.

random_stateint, instancia de RandomState o None, default=None

Cuando shuffle es True, random_state afecta al orden de los índices, que controla la aleatoriedad de cada pliegue para cada clase. En caso contrario, deje random_state como None. Pase un int para una salida reproducible a través de múltiples llamadas a la función. Ver Glosario.

Ver también

RepeatedStratifiedKFold

Repite el K-Fold Estratificado n veces.

Notas

La implementación está diseñada para:

  • Generar conjuntos de pruebas que contengan la misma distribución de clases, o lo más parecido posible.

  • Ser invariable a la etiqueta de clase: relabering y = ["Happy", "Sad"] a y = [1, 0] no debería cambiar los índices generados.

  • Preservar las dependencias de orden en la ordenación del conjunto de datos, cuando shuffle=False: todas las muestras de la clase k en algún conjunto de prueba eran contiguas en y, o estaban separadas en y por muestras de clases distintas de k.

  • Generar conjuntos de prueba en los que el más pequeño y el más grande difieran como máximo en una muestra.

Distinto en la versión 0.22: La implementación anterior no seguía la última restricción.

Ejemplos

>>> import numpy as np
>>> from sklearn.model_selection import StratifiedKFold
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([0, 0, 1, 1])
>>> skf = StratifiedKFold(n_splits=2)
>>> skf.get_n_splits(X, y)
2
>>> print(skf)
StratifiedKFold(n_splits=2, random_state=None, shuffle=False)
>>> for train_index, test_index in skf.split(X, y):
...     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: [1 3] TEST: [0 2]
TRAIN: [0 2] TEST: [1 3]

Métodos

get_n_splits

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

split

Generar í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()

Generar í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.

Tener en cuenta que proporcionar y es suficiente para generar las divisiones y, por lo tanto, np.zeros(n_samples) puede ser utilizado como un marcador de posición para X en lugar de datos de entrenamiento reales.

yarray-like de forma (n_samples,)

La variable objetivo para los problemas de aprendizaje supervisado. La estratificación se hace en base a las etiquetas y.

groupsobjeto

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 división.

Notas

Los separadores de CV aleatorios pueden devolver resultados diferentes para cada llamada de separación. Puedes hacer que los resultados sean idénticos estableciendo random_state a un número entero.

Ejemplos usando sklearn.model_selection.StratifiedKFold