Identifica il coefficiente L1 ottimale
Ora ottimizzerai il parametro C per la regolarizzazione L1 per trovare quello che riduce la complessità del modello mantenendo comunque buone metriche di performance. Eseguirai un ciclo for sui possibili valori di C, costruendo un'istanza di regressione logistica per ciascuno e calcolando le metriche di performance.
È stata creata una lista C con i valori possibili. L'array l1_metrics è stato costruito con 3 colonne: la prima contiene i valori di C, le successive due sono segnaposto per il conteggio dei coefficienti non nulli e per il recall del modello. Le caratteristiche scalate e le variabili target sono state caricate come train_X, train_Y per il training e test_X, test_Y per il testing.
Sia numpy che pandas sono caricati come np e pd, così come la funzione recall_score da sklearn.
Questo esercizio fa parte del corso
Machine Learning per il marketing con Python
Istruzioni dell'esercizio
- Esegui un ciclo
forsull'intervallo da 0 alla lunghezza della listaC. - Per ogni candidato
C, inizializza e addestra una Logistic Regression e predici il churn sui dati di test. - Per ogni candidato
C, salva i coefficienti non nulli e il recall nella seconda e terza colonna dil1_metrics. - Crea un
pandasDataFrame a partire dal1_metricscon i nomi di colonna appropriati.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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=___))