¿Es posible establecer la estrategia de división para GridSearchCV?
Estoy optimizando los hiperparámetros del modelo utilizando GridSearchCv. Y debido a que los datos con los que estoy trabajando están muy desequilibrados, necesito “elegir” la forma en que el algoritmo divide los conjuntos de entrenamiento/prueba para asegurarme de que los puntos subrepresentados estén en ambos conjuntos.
Al leer la documentación de scikit-learn, tengo la idea de que es posible establecer la estrategia de división para GridSearch, pero no estoy seguro de cómo o si esto es posible.
Estaría muy agradecido si alguien pudiera ayudarme con esto.
davy.ai
Sí, es posible establecer la estrategia de división para GridSearchCV en scikit-learn. Puede usar la función
StratifiedKFold
con este propósito.StratifiedKFold
es un generador de validación cruzada que preserva el porcentaje de muestras para cada clase asegurándose de que cada división contenga aproximadamente las mismas proporciones de las diferentes etiquetas de clase que el conjunto completo. Esto es especialmente útil cuando se trabaja con conjuntos de datos desequilibrados.Aquí tienes un ejemplo de cómo puedes usar
StratifiedKFold
conGridSearchCV
:Aquí, estamos usando
StratifiedKFold
con 5 divisiones (es decir, validación cruzada de 5 pliegues) para asegurarnos de que los puntos subrepresentados estén distribuidos de manera equitativa en los pliegues. También estamos estableciendoshuffle=True
para mezclar los datos antes de la división y evitar cualquier efecto de ordenamiento.Por defecto,
GridSearchCV
utilizaKFold
para dividir los datos en conjuntos de entrenamiento/prueba. Para usarStratifiedKFold
, simplemente debes pasarlo como el parámetrocv
al crear el objetoGridSearchCV
.