sklearn.model_selection
.GroupShuffleSplit¶
- class sklearn.model_selection.GroupShuffleSplit¶
Iterador de validación cruzada Shuffle-Group(s)-Out
Proporciona índices aleatorios de entrenamiento/prueba para dividir los datos según un grupo proporcionado por terceros. Esta información de grupo puede utilizarse para codificar estratificaciones específicas de dominio arbitrarias de las muestras como enteros.
Por ejemplo, los grupos podrían ser el año de recolección de las muestras y así permitir la validación cruzada contra las divisiones basadas en el tiempo.
La diferencia entre LeavePGroupsOut y GroupShuffleSplit es que el primero genera divisiones utilizando todos los subconjuntos de tamaño
p
grupos únicos, mientras que GroupShuffleSplit genera un número determinado por el usuario de divisiones de prueba aleatorias, cada una con una fracción de grupos únicos determinada por el usuario.Por ejemplo, una alternativa menos intensiva en términos computacionales a
LeavePGroupsOut(p=10)
seríaGroupShuffleSplit(test_size=10, n_splits=100)
.Nota: Los parámetros
test_size
ytrain_size
se refieren a grupos, y no a muestras, como en ShuffleSplit.Más información en el Manual de usuario.
- Parámetros
- n_splitsint, default=5
Número de iteraciones remezcladas y separadas.
- test_sizefloat, int, default=0.2
Si es float, debe estar entre 0.0 y 1.0 y representa la proporción de grupos a incluir en la división de prueba (redondeado hacia arriba). Si es int, representa el número absoluto de grupos de prueba. Si es None, el valor se establece como el complemento del tamaño de entrenamiento. El valor predeterminado cambiará en la versión 0.21. Seguirá siendo 0.2 sólo si no se especifica
train_size
, de lo contrario complementará eltrain_size
especificado.- train_sizefloat o int, default=None
Si es float, debe estar entre 0.0 y 1.0 y representa la proporción de los grupos a incluir en la división de entrenamiento. Si es int, representa el número absoluto de grupos de entrenamiento. Si es None, el valor se establece automáticamente en el complemento del tamaño de la prueba.
- random_stateentero, instancia de RandomState o None, default=None
Controla la aleatoriedad de los índices de entrenamiento y prueba producidos. Pasa un int para una salida reproducible a través de múltiples llamadas a la función. Ver Glosario.
Ejemplos
>>> import numpy as np >>> from sklearn.model_selection import GroupShuffleSplit >>> X = np.ones(shape=(8, 2)) >>> y = np.ones(shape=(8, 1)) >>> groups = np.array([1, 1, 2, 2, 2, 3, 3, 3]) >>> print(groups.shape) (8,) >>> gss = GroupShuffleSplit(n_splits=2, train_size=.7, random_state=42) >>> gss.get_n_splits() 2 >>> for train_idx, test_idx in gss.split(X, y, groups): ... print("TRAIN:", train_idx, "TEST:", test_idx) TRAIN: [2 3 4 5 6 7] TEST: [0 1] TRAIN: [0 1 5 6 7] TEST: [2 3 4]
Métodos
Devuelve el número de iteraciones divididas en el validador cruzado
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
- Xobject
Siempre se ignora, existe por compatibilidad.
- yobject
Siempre se ignora, existe por compatibilidad.
- groupsobject
Siempre se ignora, 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,), default=None
La variable objetivo para los problemas de aprendizaje supervisado.
- groupsarray-like de forma (n_samples,)
Etiquetas de grupo para las muestras utilizadas al dividir el conjunto de datos en conjunto de entrenamiento/prueba.
- Produce
- trainndarray
Los índices del conjunto de entrenamiento para esa división.
- testndarray
Los índices del conjunto de pruebas para esa división.
Notas
Los separadores de CV(validación cruzada) aleatorios pueden devolver resultados diferentes para cada llamada de split. Puedes hacer que los resultados sean idénticos estableciendo
random_state
a un número entero.