CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Exécutez une boucle for sur l'intervalle allant de 0 à la longueur de la liste depth_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 de depth_tunning.
  • Créez un DataFrame pandas à partir de depth_tuning 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 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=___))
Modifier et exécuter le code