Académique Documents
Professionnel Documents
Culture Documents
L'apprentissage par arbre de décision consiste à construire un arbre depuis un ensemble d'apprentissage
étiqueté. Chaque nœud interne décrit un test sur une variable d'apprentissage, chaque branche représente un
résultat du test, et chaque feuille contient la valeur de la variable de sortie.
Les algorithmes d'apprentissage par arbres de décision sont construits en divisant l'arbre du nœud racine vers
les feuilles en choisissant à chaque étape une variable d'entrée qui réalise le meilleur partage de l'ensemble
des observations sur le nœud courant. Pour choisir la variable de partage sur un nœud qu'on appelle variable
segmentation, l'algorithme teste les différentes variables d'entrée possibles et sélectionnent celle qui
maximise un critère donné.
Il existe un grand nombre de critères de ce type, les plus utilisés sont l’entropie de Shannon, l'indice de
diversité de Gini et leurs variantes.
En 1936, Edgar Anderson a collecté des données sur 3 espèces d'iris: "iris setosa", "iris virginica" et "iris
versicolor"
Par souci simplification, dans ce TP nous allons nous intéresser uniquement à la largeur et à la longueur des
pétales.
Nous utilisons ensuite la bibliothèque matplotlib qui permet de tracer des graphiques très facilement.
"plt.scatter" permet de tracer des points. Le premier "plt.scatter" permet de tracer les points
correspondant à l'espèce "Iris setosa", ces points seront vert (color='g'), le deuxième "plt.scatter" permet
de tracer les points correspondant à l'espèce "Iris virginica", ces points seront rouge (color='r'), enfin le
troisième "plt.scatter" permet de tracer les points correspondant à l'espèce "Iris versicolor", ces points seront
bleu (color='b'). Nous aurons en abscisse la longueur du pétale et en ordonnée la largeur du pétale.
Si on survol nos données, on remarque bien qu'il n'y a pas de données manquantes et il n'y a pas de problème
non plus le problème de variables catégoriques. Donc nous allons passez directement à la phase de division
des données en une partie d'entraînement et une partie de test. Puisqu'on a assez de données, nous allons
prendre 20% de ces données pour le test (test_size = 0.20) et 80% pour la phase d'entraînement.
2/6
Machine Learning
Faculté des sciences de Monastir
Maintenant que nos données sont prêtes on va pouvoir appliquer l'algorithme d'arbre de décision sur notre
jeu d'entraînement.
La toute première étape à faire c'est d'importer l'objet qui va nous permettre de faire ce travail, c'est l'objet
DecisionTreeClassifier du package sklearn.tree qui va nous permettre de créer un modèle de
prédiction qu'on appelle classifier puis utiliser sa fonction fit() sur les données d'entrée X_train et
des données de sortie y_train pour l'entrainer.
3/6
Machine Learning
Faculté des sciences de Monastir
4. Evaluation de l'arbre de décision
Une fois que notre classifier est entrainée, on peut tester sa performance en l'exécutant sur les données de
test. En fait, nous allons donner à notre classifier les données d'entrée de test X_test, et on va voir est ce
qu'il est capable de bien prédire les sorties correspondantes qu'on va appeler y_pred. Pour faire ce travail
nous allons utiliser la fonction predict() du classifier.
Pour évaluer la performance de notre classifier d'une manière automatique, nous allons créer ce la matrice
de confusion qui permet de créer un résumé des résultats de prédictions correctes et incorrectes réparties
par classe. Les résultats sont ainsi comparés avec les valeurs réelles ce qui permet de savoir quel est le taux
d'erreur commit par le classifier.
4/6
Machine Learning
Faculté des sciences de Monastir
D'après la matrice de confusion, on voit bien que notre classifier est très performant, il n'arrive pas à bien
classer juste une seule observation parmi 30.
Imaginez maintenant qu'au cours d'une promenade vous trouviez un iris, n'étant pas un spécialiste, il ne vous
est pas vraiment possible de déterminer l'espèce. En revanche, vous êtes capables de mesurer la longueur et
la largeur des pétales de cet iris. Partons du principe qu'un pétale fasse 2cm de long et 0,5cm de large. Pour
placer cette nouvelle donnée sur notre graphique, il nous suffit d'ajouter la ligne "plt.scatter(2.0, 0.5,
color='k')", le nouveau point va apparaitre en noir (color='k') :
La classe de cette nouvelle fleur est simple à trouver à partir des règles de décision établies de l'arbre
obtenue. En effet, puisque la longueur de son pétale est inférieure à 2,5 alors il s'agit d'un iris setosa.
Il est possible de rencontrer des cas plus difficiles, par exemple: largeur du pétale=0,75cm ; longueur du
pétale=2,5cm :
Dans ce genre de cas, il peut être intéressant d'utiliser l'algorithme de prédiction :
Le résultat de prédiction montre que cette nouvelle fleur est un iris virginica.
5/6