Kom igångKom igång gratis

Hitta den optimala L1-penalkoefficienten

Nu ska du finjustera parametern C för L1-regularisering för att hitta det värde som minskar modellens komplexitet utan att försämra prestandan alltför mycket. Du kör en for-slinga genom möjliga C-värden och bygger en logistisk regressionsmodell för varje värde, samt beräknar prestandamått.

En lista C med möjliga värden har skapats åt dig. Arrayen l1_metrics är uppbyggd med 3 kolumner: den första innehåller C-värdena och de två övriga är platshållare för antalet nollskilda koefficienter respektive modellens recall-värde. De skalade särdragen och målvariablerna är inlästa som train_X och train_Y för träning, samt test_X och test_Y för testning.

Både numpy och pandas är inlästa som np och pd, liksom funktionen recall_score från sklearn.

Den här övningen är en del av kursen

Maskininlärning för marknadsföring i Python

Visa kurs

Övningsinstruktioner

  • Kör en for-slinga över intervallet från 0 till längden på listan C.
  • Initiera och träna en logistisk regressionsmodell för varje C-kandidat, och förutsäg churn på testdata.
  • Lagra antalet nollskilda koefficienter och recall-värdet i den andra respektive tredje kolumnen i l1_metrics för varje C-kandidat.
  • Skapa en pandas DataFrame från l1_metrics med lämpliga kolumnnamn.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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=___))
Redigera och kör kod