Optimalen L1-Strafkoeffizienten ermitteln
Jetzt stimmst du den Parameter C für die L1-Regularisierung ab, um den Wert zu finden, der die Modellkomplexität reduziert und zugleich gute Leistungsmetriken beibehält. Du lässt eine for-Schleife über mögliche C-Werte laufen, baust jeweils eine Instanz der logistischen Regression und berechnest die Metriken.
Eine Liste C mit möglichen Werten wurde erstellt. Das Array l1_metrics wurde mit 3 Spalten aufgebaut: Die erste enthält die C-Werte, die nächsten beiden sind Platzhalter für die Anzahl der ungleich Null liegenden Koeffizienten sowie den Recall-Score des Modells. Die skalierten Merkmale und Zielvariablen wurden als train_X, train_Y für das Training und test_X, test_Y für das Testen geladen.
Sowohl numpy als np als auch pandas als pd sind geladen, ebenso die Funktion recall_score aus sklearn.
Diese Übung ist Teil des Kurses
Machine Learning für Marketing mit Python
Anleitung zur Übung
- Lass eine
for-Schleife über den Bereich von 0 bis zur Länge der ListeClaufen. - Initialisiere und fitte für jeden
C-Kandidaten eine Logistische Regression und sage Churn auf den Testdaten voraus. - Speichere für jeden
C-Kandidaten die ungleich Null liegenden Koeffizienten und den Recall-Score in der zweiten und dritten Spalte vonl1_metrics. - Erstelle aus
l1_metricseinpandasDataFrame mit den passenden Spaltennamen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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=___))