Una versión mejorada del enfoque anterior es la llamada Validación cruzada de k iteraciones estratificada. En este caso, los k bloques de validación se escogen de forma que mantengan la proporción de las muestras de cada clase. Es decir, si en el dataset del que partimos se incluyen, por ejemplo, muestras de dos clases y las proporciones de éstas son 75% y 25%, los k bloques de validación se escogerían de forma que mantuviesen estos valores (o valores tan próximos como sea posible).
En realidad, la función cross_val_score que acabamos ver implementa ya esta funcionalidad si se especifica en el parámetro cv un número entero representando el número de bloques.
También en este caso, si necesitamos más control sobre el entrenamiento de los k modelos, podemos recurrir a la clase StratifiedKFold, que nos permite generar los índices para los bloques de entrenamiento y validación.