Apprentissage automatique - Arbre de décision
- Page précédente Entraînement/test
- Page suivante MySQL Débutant

Arbre de décision (Decision Tree)
Dans ce chapitre, nous vous montrerons comment créer un "arbre de décision". Un arbre de décision est un diagramme de processus qui peut vous aider à prendre des décisions en fonction de votre expérience passée.
Dans cet exemple, une personne essaiera de décider s'il/elle devrait participer au programme de comédie.
Heureusement, dans notre exemple, le personnage en question s'inscrit à chaque fois que le programme de comédie est organisé dans le village, et il/elle s'inscrit également à des informations sur les comédiens de comédie, et il/elle s'inscrit également à savoir s'il/elle y est allé(e).
Âge | Expérience | Rank | Nationality | Go |
---|---|---|---|---|
36 | 10 | 9 | UK | NO |
42 | 12 | 4 | USA | NO |
23 | 4 | 6 | N | NO |
52 | 4 | 4 | USA | NO |
43 | 21 | 8 | USA | YES |
44 | 14 | 5 | UK | NO |
66 | 3 | 7 | N | YES |
35 | 14 | 9 | UK | YES |
52 | 13 | 7 | N | YES |
35 | 5 | 9 | N | YES |
24 | 3 | 5 | USA | NO |
18 | 3 | 7 | UK | YES |
45 | 9 | 9 | UK | YES |
Maintenant, sur la base de ce jeu de données, Python peut créer un arbre de décision, cet arbre de décision peut être utilisé pour décider s'il vaut la peine de participer à tout nouveau spectacle.
Principe de fonctionnement
Tout d'abord, importez les modules nécessaires et lisez le jeu de données à l'aide de pandas :
Exemple
Lire et afficher le jeu de données :
import pandas from sklearn import tree import pydotplus from sklearn.tree import DecisionTreeClassifier import matplotlib.pyplot as plt import matplotlib.image as pltimg df = pandas.read_csv("shows.csv") print(df)
Pour créer un arbre de décision, toutes les données doivent être numériques.
Nous devons convertir les colonnes non numériques 'Nationality' et 'Go' en valeurs numériques.
Pandas a une map()
Méthode, cette méthode accepte un dictionnaire contenant des informations sur la manière de convertir les valeurs.
{'UK': 0, 'USA': 1, 'N': 2}
Cela signifie convertir la valeur 'UK' en 0, 'USA' en 1 et 'N' en 2.
Exemple
Changer les valeurs de chaîne en valeurs numériques :
d = {'UK': 0, 'USA': 1, 'N': 2} df['Nationality'] = df['Nationality'].map(d) d = {'YES': 1, 'NO': 0} df['Go'] = df['Go'].map(d) print(df)
Ensuite, nous devons séparer les colonnes des caractéristiques de la colonne cible.
Les colonnes des caractéristiques sont celles à partir desquelles nous essayons de prédire, et la colonne cible est celle qui contient les valeurs que nous essayons de prédire.
Exemple
X est la colonne des caractéristiques, y est la colonne cible :
features = ['Age', 'Experience', 'Rank', 'Nationality'] X = df[features] y = df['Go'] print(X) print(y)
Maintenant, nous pouvons créer un arbre de décision réel, adapté à nos détails, puis enregistrer un fichier .png sur l'ordinateur :
Exemple
Créez un arbre de décision, enregistrez-le sous forme d'image, puis affichez l'image :
dtree = DecisionTreeClassifier() dtree = dtree.fit(X, y) data = tree.export_graphviz(dtree, out_file=None, feature_names=features) graph = pydotplus.graph_from_dot_data(data) graph.write_png('mydecisiontree.png') img = pltimg.imread('mydecisiontree.png') imgplot = plt.imshow(img) plt.show()
Explication des résultats
L'arbre de décision utilise vos décisions précédentes pour calculer la probabilité que vous soyez prêt à voir un comédien.
Lisons les différents aspects de l'arbre de décision :

Rank
Rank <= 6.5
représente que les comédiens classés en dessous de 6.5 suivront True
flèche (vers la gauche), et le reste suit False
flèche (vers la droite).
gini = 0.497
représente la qualité de la segmentation, et est toujours un nombre entre 0.0 et 0.5, où 0.0 signifie que tous les échantillons obtiennent le même résultat, et 0.5 signifie que la segmentation est complètement au milieu.
samples = 13
représente que, à ce point de décision, il reste encore 13 comédiens, car c'est la première étape, donc tous sont des comédiens.
value = [6, 7]
représente que dans ces 13 comédiens, 6 recevront 'NO' et 7 recevront 'GO'.
Gini
Il existe de nombreuses méthodes de segmentation des échantillons, nous utilisons la méthode GINI dans ce tutoriel.
La méthode Gini utilise la formule suivante :
Gini = 1 - (x/n)2 - (y/n)2
Dans ce cas, x est le nombre de réponses positives ('GO'), n est le nombre d'échantillons, et y est le nombre de réponses négatives ('NO'), calculés selon la formule suivante :
1 - (7 / 13)2 - (6 / 13)2 = 0.497

La prochaine étape comprend deux cases, l'une pour les comédiens, dont le 'Rank' est de 6.5 ou inférieur, et l'autre pour le reste.
True - 5 comédiens prennent fin ici :
gini = 0.0
représente que tous les échantillons obtiennent le même résultat.
samples = 5
représente que dans cette branche il reste encore 5 comédiens (5 comédiens de niveau 6.5 ou inférieur).
value = [5, 0]
ce qui signifie que 5 recevra "NO" et 0 recevra "GO".
False - 8 comédiens de théâtre continuent :
Nationality (nationalité)
Nationality <= 0,5
ce qui signifie que les comédiens dont la valeur de nationalité est inférieure à 0,5 suivront la flèche de gauche (ce qui signifie que tous ceux venant du Royaume-Uni), et les autres suivront la flèche de droite.
gini = 0,219
ce qui signifie que environ 22% des échantillons se déplaceront dans une direction.
samples = 8
ce qui indique qu'il reste 8 comédiens dans cette branche (8 comédiens dont le niveau est supérieur à 6,5).
value = [1, 7]
ce qui signifie que dans ces 8 comédiens, 1 recevra "NO" et 7 recevront "GO".

True - 4 comédiens de théâtre continuent :
Age (âge)
Age <= 35,5
ce qui signifie que les comédiens de 35,5 ans ou moins suivront la flèche de gauche, et les autres suivront la flèche de droite.
gini = 0,375
ce qui signifie que environ 37,5% des échantillons se déplaceront dans une direction.
samples = 4
ce qui indique qu'il reste 4 comédiens dans cette branche (4 comédiens britanniques).
value = [1, 3]
ce qui signifie que dans ces 4 comédiens, 1 recevra "NO" et 3 recevront "GO".
False - 4 comédiens ici prennent fin :
gini = 0.0
Représente que tous les échantillons obtiennent le même résultat.
samples = 4
ce qui indique qu'il reste 4 comédiens dans cette branche (4 comédiens britanniques).
value = [0, 4]
ce qui signifie que dans ces 4 comédiens, 0 recevra "NO" et 4 recevront "GO".

True - 2 comédiens ici prennent fin :
gini = 0.0
Représente que tous les échantillons obtiennent le même résultat.
samples = 2
ce qui indique qu'il reste 2 comédiens dans cette branche (2 comédiens de 35,5 ans ou moins).
value = [0, 2]
ce qui signifie que dans ces 2 comédiens, 0 recevra "NO" et 2 recevront "GO".
False - 2 comédiens de théâtre continuent :
Experience (expérience)
Experience <= 9,5
ce qui signifie que les comédiens ayant 9,5 ans d'expérience ou plus suivront la flèche de gauche, et les autres suivront la flèche de droite.
gini = 0,5
ce qui signifie que 50% des échantillons se déplaceront dans une direction.
samples = 2
ce qui indique qu'il reste 2 comédiens dans cette branche (2 comédiens dont l'âge dépasse 35,5 ans).
value = [1, 1]
ce qui signifie que l'un des deux comédiens recevra "NO" et l'autre recevra "GO".

True - 1 comédien ici prend fin :
gini = 0.0
Représente que tous les échantillons obtiennent le même résultat.
samples = 1
Représente que dans cette branche il reste encore 1 acteur de comédie (1 acteur ayant 9,5 ans ou moins d'expérience dans la comédie).
value = [0, 1]
Représente que 0 représente "NON", 1 représente "ALLER".
False - 1 acteur ici :
gini = 0.0
Représente que tous les échantillons obtiennent le même résultat.
samples = 1
Représente que dans cette branche il reste encore 1 acteur de comédie (l'un d'eux a plus de 9,5 ans d'expérience dans la comédie).
value = [1, 0]
1 représente "NON", 0 représente "ALLER".
Valeur prédite
Nous pouvons utiliser l'arbre de décision pour prédire de nouvelles valeurs.
Par exemple : Dois-je voir un programme joué par un acteur de comédie américain de 40 ans, ayant 10 ans d'expérience, avec un classement de comédie de 7 ?
Exemple
Utiliser predict()
Méthode pour prédire de nouvelles valeurs :
print(dtree.predict([[40, 10, 7, 1]]))
Exemple
Si le niveau de comédie est de 6, quelle est la réponse ?
print(dtree.predict([[40, 10, 6, 1]]))
Résultats différents
Si vous l'exécutez suffisamment de fois, même si vous entrez les mêmes données, l'arbre de décision vous fournira des résultats différents.
C'est parce que l'arbre de décision ne peut pas nous donner une réponse définitive de 100 %. Elle est basée sur la probabilité des résultats, et les réponses peuvent varier.
- Page précédente Entraînement/test
- Page suivante MySQL Débutant