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, dejerandom_state
comoNone
. 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"]
ay = [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
Devuelve el número de iteraciones divididas en el validador cruzado
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 paraX
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.