Wyznaczanie optymalnego współczynnika kary L1
Teraz dostroisz parametr C dla regularyzacji L1, aby znaleźć wartość, która zmniejsza złożoność modelu przy jednoczesnym zachowaniu dobrych metryk wydajności. Uruchomisz pętlę for po możliwych wartościach C i dla każdej z nich zbudujesz instancję regresji logistycznej oraz obliczysz metryki wydajności.
Lista C zawierająca możliwe wartości została już utworzona. Tablica l1_metrics ma 3 kolumny: pierwsza przechowuje wartości C, a dwie kolejne są miejscami na liczbę niezerowych współczynników oraz wartość recall modelu. Przeskalowane cechy i zmienne docelowe zostały wczytane jako train_X, train_Y do trenowania oraz test_X, test_Y do testowania.
Biblioteki numpy i pandas są dostępne jako np i pd, a funkcja recall_score została zaimportowana z sklearn.
To ćwiczenie jest częścią kursu
Uczenie maszynowe w marketingu w Pythonie
Instrukcje do ćwiczenia
- Uruchom pętlę
forpo zakresie od 0 do długości listyC. - Dla każdego kandydata
Czainicjalizuj i dopasuj regresję logistyczną, a następnie przewidź rezygnację klientów na danych testowych. - Dla każdego kandydata
Czapisz liczbę niezerowych współczynników oraz wartość recall odpowiednio w drugiej i trzeciej kolumnie tablicyl1_metrics. - Utwórz ramkę danych
pandasz tablicyl1_metrics, używając odpowiednich nazw kolumn.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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=___))