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
Instrucciones del ejercicio
- Ejecuta un bucle
forsobre el rango de 0 hasta la longitud de la listaC. - 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 del1_metrics. - Crea un
DataFramedepandasa partir del1_metricscon 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=___))