Arbres de décision dans l’apprentissage automatique
Commençons par importer le base de données.
import numpy as np
import pandas as pd
from sklearn import tree # import decision tree from scikit learn librarydf = pd.read_csv("PastHires.csv" , header = 0) # Read the dataset
# Convert the alphabetical entries to numerical entries
d = {'Y': 1, 'N': 0}
df['Employed?'] = df['Employed?'].map(d)
df['Top-tier school'] = df['Top-tier school'].map(d)
df['Interned'] = df['Interned'].map(d)
df['Hired'] = df['Hired'].map(d)
d = {'BS': 0, 'MS': 1, 'PhD': 2}
df['Level of Education'] = df['Level of Education'].map(d)
df.head()
# List the factors involved in making the decision to hire or not
features = list(df.columns[:6])
features
y = df["Hired"]
X = df[features]
clf = tree.DecisionTreeClassifier() # Decision tree Classifier
clf = clf.fit(X,y)
pip install pydotplus graphviz
from IPython.display import Image
from sklearn.externals.six import StringIO
import pydotplusdot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data,
feature_names=features)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
Image(graph.create_png())
Inférence
Analysons l’arbre de décision que nous venons d’obtenir, ce qui est crucial pour comprendre le fonctionnement de cet algorithme. À tout moment, descendre le côté droit de l’arbre montre qu’une personne est embauchée et descendre à gauche, c’est le cas. Une observation peut être faite qu’une personne qui a la colonne «Employé?» Avec une valeur> 0,5 est immédiatement embauchée. Une personne dont la colonne «Employé?» A une valeur inférieure à 0,5 mais a une valeur supérieure à 0,5 dans la colonne «Interné» est embauchée. De même, d’autres nœuds de l’arborescence peuvent être évalués. L’arbre a certaines métriques qu’il s’est fixé pour prendre des décisions progressivement tout en traversant l’arbre.
Forêt aléatoire
Random Forest n’est rien d’autre qu’une multitude d’arbres de décision. Il prend le nombre d’arbres en entrée et génère autant de combinaisons d’arbres de décision. Enfin, la prédiction est basée sur le mode en cas de classification ou la moyenne en cas de régression.
from sklearn.ensemble import RandomForestClassifierclf = RandomForestClassifier(n_estimators=10) # Set number of decision trees
clf = clf.fit(X, y)
- a été employé
- 4 employeurs précédents
- PhD comme qualification
- d’une école de haut niveau, et
- a interné
print (clf.predict([[15, 1, 4, 2, 1, 1]]))
[1]
- sans emploi
- 0 employeurs précédents
- BS comme qualification
- pas d’une école de haut niveau
- n’a pas interné
print (clf.predict([[1, 0, 0, 0, 0, 0]]))
[0]