Validación Cruzada en Python

Cuando ajustamos modelos, nuestro objetivo es mejorar su rendimiento en datos no vistos. El ajuste de hiperparámetros puede mejorar el rendimiento en los conjuntos de prueba, pero si se hace incorrectamente, puede resultar en sobreajuste. Para evitar esto, utilizamos la validación cruzada .

En Validación Cruzada en Python verás el concepto explicado en lenguaje claro y un ejemplo que puedes ejecutar en el editor de The Data Schools.

Modifica el código del ejemplo antes de pasar a la siguiente lección: la experimentación fija mejor el aprendizaje que leer pasivamente.


Método K-Fold

Un método común de validación cruzada es K-Fold. Dividimos nuestros datos de entrenamiento en K pliegues o conjuntos más pequeños. Luego, entrenamos el modelo K veces, utilizando un pliegue diferente como conjunto de validación en cada iteración y los otros K-1 pliegues como conjunto de entrenamiento.

Ejemplo

    print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
  

Método K-Fold Estratificado

Cuando tenemos clases desequilibradas en nuestros datos, es importante considerar esto durante la validación cruzada. El método K-Fold Estratificado asegura que cada pliegue tenga una proporción igual de todas las clases.

Ejemplo

    clf = DecisionTreeClassifier(random_state=25)
stratclf = DecisionTreeClassifier(random_state=25)
stratified_k_folds = StratifiedKFold(n_splits=6)
scores = cross_val_score(clf, X, y, cv=stratified_k_folds)
print("Puntuaciones de Validación Cruzada: ", scores)
print("Puntuaciones de Validación Cruzada: ", scores)
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
  

Método Leave-One-Out (LOO)

El método Leave-One-Out implica usar una sola observación como conjunto de validación y las demás como conjunto de entrenamiento, repitiendo esto para cada observación.

Ejemplo

    print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
  

Método Leave-P-Out (LPO)

El método Leave-P-Out es similar al Leave-One-Out, pero permite especificar cuántas observaciones dejar fuera para la validación.

Ejemplo

    print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
  

Método Shuffle Split

Shuffle Split divide los datos en conjuntos de entrenamiento y prueba de manera aleatoria, lo que es útil cuando no se necesita una división determinista.

Ejemplo

    print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
  

Estos son algunos de los métodos de validación cruzada que puedes aplicar en Python para evaluar tus modelos. La elección del método adecuado depende de la naturaleza de tus datos y tus objetivos de modelado. La validación cruzada es una técnica esencial para garantizar que tus modelos funcionen bien en datos no vistos.

Practica Validación Cruzada en Python en el editor

Pon en práctica lo aprendido con nuestro editor Python interactivo. Cada ejercicio incluye el código de partida y un botón para abrirlo en una nueva pestaña, donde puedes modificarlo y ejecutarlo.

Ejercicio: Un método común de validación cruzada es K-Fold

Un método común de validación cruzada es K-Fold. Dividimos nuestros datos de entrenamiento en K pliegues o conjuntos más pequeños. Luego, entrenamos el modelo K veces, utilizando u.

Ejemplo

    print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
  
Abrir en editor

Ejercicio: Árbol de decisión

Cuando tenemos clases desequilibradas en nuestros datos, es importante considerar esto durante la validación cruzada. El método K-Fold Estratificado asegura que cada pliegue tenga.

Ejemplo

    clf = DecisionTreeClassifier(random_state=25)
stratclf = DecisionTreeClassifier(random_state=25)
stratified_k_folds = StratifiedKFold(n_splits=6)
scores = cross_val_score(clf, X, y, cv=stratified_k_folds)
print("Puntuaciones de Validación Cruzada: ", scores)
print("Puntuación Promedio de Validación Cruzada: ", scores.mean())
print("Número de Puntuaciones de Validación Cruzada utilizadas en el Promedio: ", len(scores))
  
Abrir en editor

Ejercicio: Usar print()

El método Leave-One-Out implica usar una sola observación como conjunto de validación y las demás como conjunto de entrenamiento, repitiendo esto para cada observación.

Ejemplo

    print("Práctica 485")
valores = [1, 2, 3]
print(sum(valores))
  
Abrir en editor

Ejercicio: Usar print() (2)

El método Leave-P-Out es similar al Leave-One-Out, pero permite especificar cuántas observaciones dejar fuera para la validación.

Ejemplo

    print("Práctica 486")
valores = [1, 2, 3]
print(sum(valores))
  
Abrir en editor

Ejercicio: Usar print() (3)

Shuffle Split divide los datos en conjuntos de entrenamiento y prueba de manera aleatoria, lo que es útil cuando no se necesita una división determinista.

Ejemplo

    print("Práctica 487")
valores = [1, 2, 3]
print(sum(valores))
  
Abrir en editor