Déterminer la profondeur optimale de l'arbre
Vous allez maintenant ajuster le paramètre max_depth de l'arbre de décision pour trouver celui qui réduit le surapprentissage tout en maintenant de bonnes mesures de performance du modèle. Vous exécuterez une boucle for sur plusieurs valeurs du paramètre max_depth, vous entraînerez un arbre de décision pour chacune, puis vous calculerez les mesures de performance.
La liste depth_list contenant les valeurs candidates a été chargée pour vous. Le tableau depth_tuning a été construit pour vous avec 2 colonnes : la première est remplie avec les profondeurs candidates et la suivante sert d'espace réservé pour le score de rappel. De plus, les variables de caractéristiques et la cible ont été chargées sous train_X, train_Y pour l'entraînement, et test_X, test_Y pour le test. Les bibliothèques numpy et pandas sont chargées sous np et pd respectivement.
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 listedepth_list. - Pour chaque profondeur candidate, initialisez et entraînez un classificateur par arbre de décision et prédisez le désabonnement sur les données de test.
- Pour chaque profondeur candidate, calculez le score de rappel à l'aide de la fonction
recall_score()et enregistrez-le dans la deuxième colonne dedepth_tunning. - Créez un DataFrame
pandasà partir dedepth_tuningavec 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 depth list length
for index in ___(0, len(depth_list)):
# Initialize and fit decision tree with the `max_depth` candidate
mytree = DecisionTreeClassifier(___=depth_list[index])
mytree.fit(___, train_Y)
# Predict churn on the testing data
pred_test_Y = mytree.predict(___)
# Calculate the recall score
depth_tuning[index,1] = ___(test_Y, ___)
# Name the columns and print the array as pandas DataFrame
col_names = ['Max_Depth','Recall']
print(pd.DataFrame(depth_tuning, columns=___))