En este enfoque -probablemente el más usado- se divide el conjunto de entrenamiento en k bloques, usándose uno de ellos para validación y el resto (k-1) para entrenamiento. Rotando el bloque de validación entre los k bloques disponibles, se pueden entrenar k modelos cuyos resultados se combinan tal y como se ha explicado. Por ejemplo, para k = 4 la distribución sería la siguiente:
k suele tomar típicamente los valores 3, 5 o 10. En general, cuando mayor sea el número de muestras con las que estamos trabajando, menor puede ser el número de bloques en los que dividimos los datos manteniendo la precisión de la estimación.
Scikit-Learn implementa esta funcionalidad en las clases sklearn.model_selection.cross_val_score y sklearn.model_selection.cross_validate que evalúan el resultado de un modelo según esta estrategia.
Si queremos más control sobre el entrenamiento de los k modelos, podemos recurrir a la clase KFold, que nos permite generar los índices de las muestras de entrenamiento y validación para los k bloques.