Python Tutorial

Arbre de décision d’apprentissage automatique Python



Arbre de décision

Dans ce chapitre, nous allons vous montrer comment créer un “arbre de décision”. Un arbre de décision est un organigramme et peut vous aider à prendre des décisions en fonction de votre expérience antérieure.

Dans l’exemple, une personne essaiera de décider si elle doit aller à un spectacle d’humour ou non.

Heureusement, notre exemple de personne s’est inscrit à chaque fois qu’il y avait un spectacle d’humour en ville, et a enregistré des informations sur le comédien, et s’est également inscrit s’il y était allé ou non.

Âge Expérience Rang Nationalité Aller
36 dix 9 ROYAUME-UNI NON
42 12 4 Etats-Unis NON
23 4 6 N NON
52 4 4 Etats-Unis NON
43 21 8 Etats-Unis OUI
44 14 5 ROYAUME-UNI NON
66 3 7 N OUI
35 14 9 ROYAUME-UNI OUI
52 13 7 N OUI
35 5 9 N OUI
24 3 5 Etats-Unis NON
18 3 7 ROYAUME-UNI OUI
45 9 9 ROYAUME-UNI OUI

Maintenant, sur la base de cet ensemble de données, Python peut créer un arbre de décision qui peut être utilisé pour décider si de nouvelles émissions valent la peine d’être suivies.



Comment ça marche?

Tout d’abord, lisez l’ensemble de données avec pandas :

Exemple

Lire et imprimer le jeu de données :

importer des pandas

df = pandas.read_csv(“data.csv”)

imprimer (df)

Exemple d’exécution »

Pour faire un arbre de décision, toutes les données doivent être numériques.

Nous devons convertir les colonnes non numériques ‘Nationalité’ et ‘Aller’ en valeurs numériques.

Les pandas ont un map() méthode qui prend un dictionnaire avec des informations sur la façon de convertir les valeurs.

{'UK': 0, 'USA': 1, 'N': 2}

Signifie convertir les valeurs ‘UK’ en 0, ‘USA’ en 1 et ‘N’ en 2.

Exemple

Changez les valeurs de chaîne en valeurs numériques :

d = {‘Royaume-Uni’ : 0, ‘États-Unis’ : 1, ‘N’ : 2}
df[‘Nationality’] = df[‘Nationality’].map(d)
d = {‘OUI’ : 1, ‘NON’ : 0}
df[‘Go’] = df[‘Go’].map(d)

imprimer (df)

Exemple d’exécution »

Ensuite, nous devons séparer les fonctionnalité colonnes de la cible colonne.

Les colonnes de caractéristiques sont les colonnes que nous essayons de prédire depuiset la colonne cible est la colonne avec les valeurs que nous essayons de prédire.

Exemple

X est les colonnes de caractéristiques,
y est la colonne cible :

fonctionnalités = [‘Age’, ‘Experience’, ‘Rank’, ‘Nationality’]

X = df[features]
y = df[‘Go’]

impression(X)
imprimer (y)

Exemple d’exécution »

Nous pouvons maintenant créer l’arbre de décision proprement dit, l’adapter à nos détails. Commencez par importer les modules dont nous avons besoin :

Exemple

Créez et affichez un arbre de décision :

importer des pandas
de l’arborescence d’importation sklearn
depuis sklearn.tree importer DecisionTreeClassifier
importer matplotlib.pyplot en tant que plt

df = pandas.read_csv(“data.csv”)

d = {‘Royaume-Uni’ : 0, ‘États-Unis’ : 1, ‘N’ : 2}
df[‘Nationality’]
= df[‘Nationality’].map(d)
d = {‘OUI’ : 1, ‘NON’ : 0}
df[‘Go’] = df[‘Go’].map(d)

fonctionnalités = [‘Age’, ‘Experience’, ‘Rank’, ‘Nationality’]

X = df[features]
y = df[‘Go’]

dtree = DecisionTreeClassifier()
dtree = dtree.fit(X, y)

tree.plot_tree(dtree, feature_names=features)

Exemple d’exécution »


Résultat expliqué

L’arbre de décision utilise vos décisions antérieures pour calculer les chances que vous vouliez aller voir un comédien ou non.

Lisons les différents aspects de l’arbre de décision :

Rang

Rank <= 6.5 signifie que chaque comédien avec un rang de 6,5 ou moins suivra le
True flèche (vers la gauche), et le reste suivra la False flèche (vers la droite).

gini = 0.497 fait référence à la qualité de la division et est toujours un nombre compris entre 0,0 et 0,5, où 0,0 signifierait que tous les échantillons ont obtenu le même résultat, et 0,5 signifierait que la division est effectuée exactement au milieu.

samples = 13 signifie qu’il reste 13 comédiens à ce stade de la décision, c’est-à-dire tous puisqu’il s’agit de la première étape.

value = [6, 7] signifie que sur ces 13 comédiens, 6 obtiendront un “NON”, et 7 obtiendront un “GO”.

Gini

Il existe de nombreuses façons de diviser les échantillons, nous utilisons la méthode GINI dans ce tutoriel.

La méthode de Gini utilise cette formule :

Gini = 1 - (x/n)2 - (y/n)2

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 (“NON”), ce qui nous donne ce calcul :

1 - (7 / 13)2 - (6 / 13)2 = 0.497

L’étape suivante contient deux cases, une case pour les comédiens avec un “rang” de 6,5 ou moins, et une case avec le reste.

Vrai – 5 comédiens finissent ici :

gini = 0.0 signifie que tous les échantillons ont obtenu le même résultat.

samples = 5 signifie qu’il reste 5 comédiens dans cette branche (5 comédiens avec un rang de 6,5 ou moins).

value = [5, 0] signifie que 5 obtiendra un “NON” et 0 obtiendra un “GO”.

Faux – 8 comédiens continuent :

Nationalité

Nationality <= 0.5 signifie que les comédiens avec une valeur de nationalité inférieure à 0,5 suivront la flèche vers la gauche (ce qui signifie tout le monde du Royaume-Uni, ), et les autres suivront la flèche vers la droite.

gini = 0.219 signifie qu’environ 22 % des échantillons iraient dans une direction.

samples = 8 signifie qu’il reste 8 comédiens dans cette branche (8 comédiens avec un Rang supérieur à 6,5).

value = [1, 7] signifie que sur ces 8 comédiens, 1 obtiendra un “NON” et 7 obtiendront un “GO”.


Vrai – 4 comédiens continuent :

Âge

Age <= 35.5 signifie que les comédiens âgés de 35,5 ans ou moins suivront la flèche vers la gauche et que les autres suivront la flèche vers la droite.

gini = 0.375 signifie qu’environ 37,5% des échantillons iraient dans une direction.

samples = 4 signifie qu’il reste 4 comédiens dans cette branche (4 comédiens du Royaume-Uni).

value = [1, 3] signifie que sur ces 4 comédiens, 1 obtiendra un “NON” et 3 obtiendront un “GO”.

Faux – 4 comédiens se terminent ici :

gini = 0.0 signifie que tous les échantillons ont obtenu le même résultat.

samples = 4 signifie qu’il reste 4 comédiens dans cette branche (4 comédiens non britanniques).

value = [0, 4] signifie que sur ces 4 comédiens, 0 obtiendra un “NON” et 4 obtiendront un “GO”.


Vrai – 2 comédiens se terminent ici :

gini = 0.0 signifie que tous les échantillons ont obtenu le même résultat.

samples = 2 signifie qu’il reste 2 comédiens dans cette branche (2 comédiens âgés de 35,5 ans ou moins).

value = [0, 2] signifie que sur ces 2 comédiens, 0 obtiendra un “NON” et 2 obtiendront un “GO”.

Faux – 2 comédiens continuent :

Expérience

Experience <= 9.5 signifie que les comédiens ayant 9,5 ans d’expérience ou moins suivront la flèche vers la gauche, et les autres suivront la flèche vers la droite.

gini = 0.5 signifie que 50% des échantillons iraient dans une direction.

samples = 2 signifie qu’il reste 2 comédiens dans cette branche (2 comédiens de plus de 35,5 ans).

value = [1, 1] signifie que de ces 2 comédiens, 1 obtiendra un “NON” et 1 obtiendra un “GO”.


Vrai – 1 comédien se termine ici :

gini = 0.0 signifie que tous les échantillons ont obtenu le même résultat.

samples = 1 signifie qu’il reste 1 comédien dans cette branche (1 comédien avec 9,5 années d’expérience ou moins).

value = [0, 1] signifie que 0 obtiendra un “NON” et 1 obtiendra un “GO”.

Faux – 1 comédien se termine ici :

gini = 0.0 signifie que tous les échantillons ont obtenu le même résultat.

samples = 1 signifie qu’il reste 1 comédiens dans cette branche (1 comédien avec plus de 9,5 ans d’expérience).

value = [1, 0] signifie que 1 obtiendra un “NON” et 0 obtiendra un “GO”.


Prédire les valeurs

Nous pouvons utiliser l’arbre de décision pour prédire de nouvelles valeurs.

Exemple : Dois-je aller voir une émission mettant en vedette un comédien américain de 40 ans, avec 10 ans d’expérience, et un classement comique de 7 ?

Exemple

Utilisez la méthode predict() pour prédire de nouvelles valeurs :

print(dtree.predict([[40, 10, 7, 1]]))

Exemple d’exécution »

Exemple

Quelle serait la réponse si le rang de la comédie était de 6 ?

print(dtree.predict([[40, 10, 6, 1]]))

Exemple d’exécution »


Différents résultats

Vous verrez que l’arbre de décision vous donne des résultats différents si vous l’exécutez suffisamment de fois, même si vous l’alimentez avec les mêmes données.

C’est parce que l’arbre de décision ne nous donne pas une réponse sûre à 100 %. Il est basé sur la probabilité d’un résultat, et la réponse variera.


#Arbre #décision #dapprentissage #automatique #Python

Related Articles

Back to top button