Identifică coeficientul optim de penalizare L1
Acum vei ajusta parametrul C pentru regularizarea L1, ca să găsești valoarea care reduce complexitatea modelului păstrând în același timp performanțe bune. Vei rula o buclă for prin valorile posibile ale lui C și vei construi câte o instanță de regresie logistică pentru fiecare, calculând totodată metricile de performanță.
O listă C a fost creată cu valorile posibile. Tabloul l1_metrics a fost construit cu 3 coloane: prima conține valorile lui C, iar următoarele două sunt marcatori de loc pentru numărul de coeficienți nenuli și scorul de tip recall al modelului. Caracteristicile scalate și variabilele țintă au fost încărcate ca train_X, train_Y pentru antrenament și test_X, test_Y pentru testare.
Atât numpy, cât și pandas sunt încărcate ca np și pd, alături de funcția recall_score din sklearn.
Acest exercițiu face parte din cursul
Machine Learning pentru Marketing în Python
Instrucțiuni pentru exercițiu
- Rulează o buclă
forpeste intervalul de la 0 până la lungimea listeiC. - Pentru fiecare valoare candidat
C, inițializează și antrenează o regresie logistică, apoi prezice abandonul pe datele de testare. - Pentru fiecare valoare candidat
C, stochează coeficienții nenuli și scorul recall în a doua, respectiv a treia coloană a luil1_metrics. - Creează un DataFrame
pandasdinl1_metricscu numele de coloane corespunzătoare.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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=___))