Tutoriel Python

Python ACCUEIL Introduction à Python Python pour commencer Syntaxe Python Commentaires Python Variables Python Types de données Python Nombres Python Casting Python Chaînes Python Booléens Python Opérateurs Python Listes Python Tuples Python Ensembles Python Dictionnaires Python Python Si... Sinon Boucles tant que Python Python pour les boucles Fonctions Python Python Lambda Tableaux Python Classes/Objets Python Héritage Python Itérateurs Python Portée Python Modules Python Dates Python Mathématiques Python PythonJSON Python RegEx PIP Python Python Essayer... Sauf Entrée utilisateur Python Formatage de chaîne Python

La gestion des fichiers

Gestion des fichiers Python Fichiers de lecture Python Python écrire/créer des fichiers Python Supprimer des fichiers

Modules Python

Tutoriel NumPy Procédure pas à pas Panda Tutoriel Scipy

Python Matplotlib

Introduction à Matplotlib Matplotlib Commencer MatplotlibPyplot Tracé Matplotlib Marqueurs Matplotlib Ligne Matplotlib Étiquettes Matplotlib Grille Matplotlib Sous-parcelles Matplotlib Matplotlib Scatter Barres Matplotlib Histogrammes Matplotlib Graphiques à secteurs Matplotlib

Apprentissage automatique

Commencer Mode médian moyen Écart-type Centile Diffusion des données Répartition normale des données Nuage de points Régression linéaire Régression polynomiale Régression multiple Échelle Former/Tester Arbre de décision

Python MySQL

MySQL Premiers pas Créer une base de données MySQL Créer une table MySQL Insertion MySQL Sélectionnez MySQL MySQL Où Trier MySQL par Supprimer MySQL Table de dépôt MySQL Mise à jour MySQL Limite MySQL Rejoindre MySQL

Python MongoDB

MongoDB Commencer MongoDB Créer une base de données Créer une collection MongoDB Insertion MongoDB Trouver MongoDB Requête MongoDB Tri MongoDB Supprimer MongoDB Collection de dépôt MongoDB Mise à jour MongoDB Limite MongoDB

Référence Python

Présentation de Python Fonctions intégrées Python Méthodes de chaîne Python Méthodes de liste Python Méthodes du dictionnaire Python Méthodes Python Tuple Méthodes d'ensemble Python Méthodes de fichier Python Mots-clés Python Exceptions Python Glossaire Python

Référence des modules

Module aléatoire Module de demandes Module Statistiques Module de mathématiques Module cMath

Python Comment

Supprimer les doublons de liste Inverser une chaîne Additionner deux nombres

Exemples Python

Exemples Python Compilateur Python Exercices Python Quizz Python Certificat Python

Apprentissage automatique - Arbre de décision



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, a enregistré des informations sur le comédien et s'est également inscrit s'il y était allé ou non.

Âge De l'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 sept N OUI
35 14 9 Royaume-Uni OUI
52 13 sept N OUI
35 5 9 N OUI
24 3 5 Etats-Unis NON
18 3 sept 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, importez les modules dont vous avez besoin et lisez l'ensemble de données avec pandas :

Exemple

Lire et imprimer 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 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.

Pandas a une 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 = {'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 de fonctionnalités de la colonne cible .

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

Exemple

Xest les colonnes de caractéristiques, yest la colonne cible :

features = ['Age', 'Experience', 'Rank', 'Nationality']

X = df[features]
y = df['Go']

print(X)
print(y)

Nous pouvons maintenant créer l'arbre de décision proprement dit, l'adapter à nos détails et enregistrer un fichier .png sur l'ordinateur :

Exemple

Créez un arbre de décision, enregistrez-le en tant qu'image et 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()


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.5signifie que chaque comédien avec un rang de 6,5 ou moins suivra la Trueflèche (vers la gauche), et les autres suivront la Falseflè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

xest le nombre de réponses positives ("GO"), nest le nombre d'échantillons, et yest le nombre de réponses négatives ("NO"), 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.5signifie 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.375signifie qu'environ 37,5% des échantillons iraient dans une direction.

samples = 4signifie 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 = 4signifie 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 = 2signifie 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 :

De l'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 = 1signifie 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

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

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


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.