CommencezCommencez gratuitement

Repérer le coefficient de pénalisation L1 optimal

Vous allez maintenant ajuster le paramètre C pour la régularisation L1 afin de trouver celui qui réduit la complexité du modèle tout en maintenant de bonnes mesures de performance. Vous exécuterez une boucle for sur les valeurs possibles de C et construirez une régression logistique pour chacune, puis calculerez les mesures de performance.

Une liste C a été créée avec les valeurs possibles. Le tableau l1_metrics a été construit avec 3 colonnes : la première contient les valeurs de C, et les deux suivantes servent d'espaces réservés pour le nombre de coefficients non nuls et le rappel (recall) du modèle. Les variables de caractéristiques normalisées et la cible ont été chargées comme train_X, train_Y pour l'entraînement, et test_X, test_Y pour le test.

numpy et pandas sont chargés sous les alias np et pd, ainsi que la fonction recall_score de sklearn.

Cette activité fait partie du cours

Machine Learning pour le marketing en Python

Voir le cours

Instructions de l’exercice

  • Exécutez une boucle for sur l'intervalle allant de 0 à la longueur de la liste C.
  • Pour chaque valeur candidate de C, initialisez et entraînez une régression logistique, puis prédisez le désabonnement sur les données de test.
  • Pour chaque valeur candidate de C, enregistrez le nombre de coefficients non nuls et le rappel (recall) dans la deuxième et la troisième colonne de l1_metrics.
  • Créez un DataFrame pandas à partir de l1_metrics avec les noms de colonnes appropriés.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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=___))
Modifier et exécuter le code