IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Esegui un ciclo for sull'intervallo da 0 alla lunghezza della lista C.
  • 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 di l1_metrics.
  • Crea un pandas DataFrame a partire da l1_metrics con 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=___))
Modifica ed esegui il codice