ComenzarEmpieza gratis

Identificar el coeficiente óptimo de penalización L1

Ahora vas a ajustar el parámetro C para la regularización L1 y encontrar el valor que reduzca la complejidad del modelo manteniendo unas buenas métricas de rendimiento. Ejecutarás un bucle for sobre posibles valores de C, crearás instancias de regresión logística para cada uno y calcularás las métricas de rendimiento.

Se ha creado una lista C con los valores posibles. La matriz l1_metrics se ha construido con 3 columnas: la primera contiene los valores de C y las dos siguientes son marcadores de posición para el recuento de coeficientes distintos de cero y el recall del modelo. Las variables de características escaladas y la variable objetivo se han cargado como train_X, train_Y para entrenamiento y test_X, test_Y para prueba.

Tanto numpy como pandas están cargados como np y pd, así como la función recall_score de sklearn.

Este ejercicio forma parte del curso

Machine Learning para marketing en Python

Ver curso

Instrucciones del ejercicio

  • Ejecuta un bucle for sobre el rango de 0 hasta la longitud de la lista C.
  • Para cada candidato C, inicializa y ajusta una Regresión Logística y predice el churn en los datos de prueba.
  • Para cada candidato C, guarda los coeficientes distintos de cero y el recall en la segunda y tercera columnas de l1_metrics.
  • Crea un DataFrame de pandas a partir de l1_metrics con los nombres de columna adecuados.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Run a for loop over the range of C list length
for index in ___(0, len(C)):
  # Initialize and fit Logistic Regression with the C candidate
  logreg = ___(penalty='l1', C=C[___], solver='liblinear')
  logreg.fit(___, train_Y)
  # Predict churn on the testing data
  pred_test_Y = logreg.___(test_X)
  # Create non-zero count and recall score columns
  l1_metrics[index,1] = np.___(logreg.coef_)
  l1_metrics[index,2] = recall_score(___, pred_test_Y)

# Name the columns and print the array as pandas DataFrame
col_names = ['C','Non-Zero Coeffs','Recall']
print(pd.DataFrame(l1_metrics, columns=___))
Editar y ejecutar código