Bepaal de optimale L1-regularisatiecoëfficiënt
Je gaat nu de parameter C voor L1-regularisatie afstemmen om de waarde te vinden die de modelcomplexiteit verlaagt en toch goede modelprestatiemetingen behoudt. Je voert een for-loop uit over mogelijke C-waarden en bouwt voor elke waarde een logistic-regressiemodel, en berekent prestatiekenmerken.
Er is een lijst C aangemaakt met de mogelijke waarden. De array l1_metrics is opgebouwd met 3 kolommen: de eerste bevat de C-waarden, en de volgende twee zijn placeholders voor het aantal niet-nulcoëfficiënten en de recall-score van het model. De geschaalde features en doelvariabelen zijn geladen als train_X, train_Y voor training, en test_X, test_Y voor testen.
Zowel numpy als pandas zijn geladen als np en pd, en ook de functie recall_score uit sklearn is beschikbaar.
Deze oefening maakt deel uit van de cursus
Machine Learning voor marketing in Python
Oefeninstructies
- Voer een
for-loop uit over het bereik van 0 tot de lengte van de lijstC. - Initialiseer en fit voor elke
C-kandidaat een Logistic Regression en voorspel churn op testgegevens. - Sla voor elke
C-kandidaat het aantal niet-nulcoëfficiënten en de recall-score op in de tweede en derde kolom vanl1_metrics. - Maak een
pandasDataFrame vanl1_metricsmet de juiste kolomnamen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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=___))