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
Instructions de l’exercice
- Exécutez une boucle
forsur l'intervalle allant de 0 à la longueur de la listeC. - 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 del1_metrics. - Créez un DataFrame
pandasà partir del1_metricsavec 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=___))