Regresión logística regularizada

En el capítulo 1, utilizó la regresión logística en el conjunto de datos de dígitos escritos a mano. Aquí exploraremos el efecto de la regularización L2.

El conjunto de datos de dígitos manuscritos ya está cargado, dividido y almacenado en las variables X_train, y_train, X_valid, y y_valid. Las variables train_errs y valid_errs ya están inicializadas como listas vacías.

Este ejercicio forma parte del curso

Clasificadores lineales en Python

Ver curso

Instrucciones de ejercicio

  • Recorrer en bucle los diferentes valores de C_value, creando y ajustando un modelo LogisticRegression cada vez.
  • Guarda el error en el conjunto de entrenamiento y en el conjunto de validación para cada modelo.
  • Cree un gráfico del error de entrenamiento y de prueba en función del parámetro de regularización, C.
  • Mirando el gráfico, ¿cuál es el mejor valor de C?

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# Train and validaton errors initialized as empty list
train_errs = list()
valid_errs = list()

# Loop over values of C_value
for C_value in [0.001, 0.01, 0.1, 1, 10, 100, 1000]:
    # Create LogisticRegression object and fit
    lr = ____
    lr.fit(____)
    
    # Evaluate error rates and append to lists
    train_errs.append( 1.0 - lr.score(____) )
    valid_errs.append( 1.0 - lr.score(____) )
    
# Plot results
plt.semilogx(C_values, train_errs, C_values, valid_errs)
plt.legend(("train", "validation"))
plt.show()