Configurer les paramètres de GridSearch
Un hyperparamètre est un paramètre passé à une fonction. Par exemple, max_depth ou min_samples_leaf sont des hyperparamètres de la fonction DecisionTreeClassifier(). L’ajustement des hyperparamètres (hyperparameter tuning) consiste à tester différentes valeurs pour trouver celles qui sont optimales : celles qui donnent les meilleures prédictions selon vos objectifs. Dans sklearn, vous pouvez utiliser GridSearch pour tester différentes combinaisons d’hyperparamètres. Encore mieux, vous pouvez utiliser GridSearchCV() pour tester différentes combinaisons et lancer une validation croisée dessus en une seule fonction !
Dans cet exercice, vous allez préparer les différentes valeurs à tester pour max_depth et min_samples_leaf. Vous les placerez ensuite dans un dictionnaire, car c’est ce que requiert GridSearchCV() :
- les clés du dictionnaire seront les noms des hyperparamètres
- les valeurs du dictionnaire seront les attributs (les valeurs d’hyperparamètres) que vous souhaitez tester
Au lieu d’écrire toutes les valeurs manuellement, vous allez utiliser la fonction range(), qui permet de générer des valeurs de manière incrémentale. Par exemple, range(1, 10, 2) générera une liste contenant des valeurs allant de 1 inclus à 10 non inclus, par incréments de 2. Le résultat final sera donc [1, 3, 5, 7, 9].
Cet exercice fait partie du cours
Analytique RH : prédire l’attrition des employés en Python
Instructions
- En suivant le format de l’exemple ci-dessus, générez des valeurs pour la profondeur maximale allant de 5 à 20 par incréments de 1
- Faites de même pour la taille minimale d’échantillon avec des valeurs de 50 à 450 par incréments de 50
- Créez le dictionnaire en indiquant les valeurs à tester pour
max_depthetmin_samples_leaf, respectivement, en utilisant les variables que vous venez de créer
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Generate values for maximum depth
depth = [i for i in ____(5,21,1)]
# Generate values for minimum sample size
samples = [i for i in range(____,500,____)]
# Create the dictionary with parameters to be checked
parameters = dict(max_depth=depth, min_samples_leaf=____)