UNIVERSITE NORD-AMERICAINE PRIVEE
INSTITUT INTERNATIONAL DE TECHNOLOGIE
DEPARTEMENT INFORMATIQUE
© Travaux pratiques n°2 AU : 2021-2022
Matière Fouille de données Semestre : 1
Discipline 2ème année Génie Informatique
Enseignants Dr. Taoufik Ben Abdallah
Nombre de pages : 2
Arbres de décision avec scikit-learn
L’objectif dans cette partie est de construire un bon modèle à partir du jeu de données décrit dans le fichier [Link].
Ce Jeu de données vise à prédire si un crédit est accordé (+) ou non (-) à un client au sein d’une banque. Il est composé
de 653 observations décrites par 𝒏_𝒇𝒆𝒂𝒕 = 15 attributs descripteurs (𝑨𝟏 … 𝑨𝟏𝟓) (6 numériques et 9 discrets), et la
variable à prédire 𝑪 (+ ou -). Tous les noms et valeurs des attributs ont été remplacés par des symboles sans signification
afin de protéger la confidentialité des données (Tableau 1).
𝑨𝟏 : b, a 𝑨𝟓 : g, p, gg 𝑨𝟗 : t, f 𝑨𝟏𝟑 : g, p, s
𝑨𝟐 : numérique 𝑨𝟔 : c, d, cc, i, j, k, m, r, q, w, x, e, aa, ff 𝑨𝟏𝟎 : t, f 𝑨𝟏𝟒 : numérique
𝑨𝟑 : numérique 𝑨𝟕 : v, h, bb, j, n, z, dd, ff, o 𝑨𝟏𝟏 : numérique 𝑨𝟏𝟓 : numérique
𝑨𝟒 : u, y, l, t 𝑨𝟖 : numérique 𝑨𝟏𝟐 : t, f 𝑪 : + ou -
Tableau 1 : Types des variables dans [Link]
Le Tableau 2 montre un extrait du jeu de données [Link]
𝑨𝟏 𝑨𝟐 𝑨𝟑 𝑨𝟒 𝑨𝟓 𝑨𝟔 𝑨𝟕 𝑨𝟖 𝑨𝟗 𝑨𝟏𝟎 𝑨𝟏𝟏 𝑨𝟏𝟐 𝑨𝟏𝟑 𝑨𝟏𝟒 𝑨𝟏𝟓 𝑪
b 30.83 0.0 u g w v 1.25 t t 1 f g 202 0 +
a 58.67 4.46 u g q h 3.04 t t 6 f g 43 560 +
a 24.50 0.5 u g q h 1.5 t f 0 f g 280 824 +
b 27.83 1.54 u g w v 3.75 t t 5 t g 100 3 +
b 20.17 5.625 u g w v 1.71 t f 0 f s 120 0 +
b 32.08 4.0 u g m v 2.5 t f 0 t g 360 0 +
b 33.17 1.04 u g r h 6.5 t f 0 t g 164 31285 +
a 22.92 11.585 u g cc v 0.04 t f 0 f g 80 1349 +
Tableau 2 : Extrait de jeu de données [Link]
Dans ce TP, on va expérimenter l’algorithme d’arbre de décision CART pour répondre à différents problèmes liés à
l'apprentissage supervisé avec le langage Python notamment en utilisant la bibliothèque scikit-learn. Cette bibliothèque
est destinée principalement à l’apprentissage automatique.
Télécharger le fichier "TP2_DM_2021.zip" via Moodle, et extraire les fichiers dedans : "[Link]", "TP2_DM.ipynb",
et "[Link]". Puis, importer le jeu de données [Link] dans Google drive, et de lancer Google colab.
Importation des bibliothèques
import numpy as np
import pandas as pd
import [Link] as plt
import seaborn as sns
from sklearn.model_selection import train_test_split, cross_val_predict
from [Link] import OneHotEncoder
from [Link] import DecisionTreeClassifier, export_graphviz, export_text
from [Link] import confusion_matrix, accuracy_score, precision_score, recall_score
from graphviz import Source
import warnings
[Link]('ignore')
Travail à faire :
1. Charger le jeu de donnée [Link] dans une variable nommée 𝒅𝒂𝒕𝒂_𝒄𝒓𝒆𝒅𝒊𝒕 (utiliser la fonction read_csv de la
bibliothèque pandas). Afficher les 𝟓 premières lignes de 𝒅𝒂𝒕𝒂_𝒄𝒓𝒆𝒅𝒊𝒕
2. Déterminer l’histogramme de la répartition des classes de 𝒅𝒂𝒕𝒂_𝒄𝒓𝒆𝒅𝒊𝒕 (utiliser la fonction countplot de la
bibliothèque seborn)
1/2
3. Transformer les attributs discrets avec 𝒎 modalités en 𝒎 attributs binaires en un dataframe nommé 𝒅𝒂𝒕𝒂_𝒕 (utiliser
la classe OneHotEncoder de la bibliothèque [Link]).Afficher les 5 premières lignes de 𝒅𝒂𝒕𝒂_𝒕
4. Construire le dataframe 𝒅𝒇_𝒄𝒓𝒆𝒅𝒊𝒕 en concaténant les colonnes de 𝒅𝒂𝒕𝒂_𝒕 avec les colonnes des attributs continus
de 𝒅𝒂𝒕𝒂_𝒄𝒓𝒆𝒅𝒊𝒕 (y compris la classe 𝑪). Afficher les 3 premières lignes de 𝒅𝒇_𝒄𝒓𝒆𝒅𝒊𝒕
5. Transformer 𝒅𝒇_𝒄𝒓𝒆𝒅𝒊𝒕 en deux tableaux (ndarray) 𝑿 et 𝒀; 𝑿 contient les valeurs des variables descripteurs,
et 𝒀 contient les valeurs de la variable à prédire. Afficher 𝑿 et 𝒀
6. Séparer les données en deux parties : 𝟕𝟎% sélectionnées aléatoirement sans répétions pour l’apprentissage (𝑿_𝒕𝒓𝒂𝒊𝒏,
𝒀_𝒕𝒓𝒂𝒊𝒏), et les 𝟑𝟎% restantes pour le test (𝑿_𝒕𝒆𝒔𝒕, 𝒀_𝒕𝒓𝒂𝒊𝒏) (appliquer la fonction train_test_split de la
bibliothèque sklearn.model_selection). NB. L’utilisation de train_test_split avec random_state=1 donne des
résultats similaires chaque fois que vous exécutez le code
7. Générer un modèle, nommé 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟏, en appliquant l’algorithme d’arbre de décision CART (utiliser la classe
DecisionTreeClassifier de la bibliothèque [Link] sans modifier ses paramètres)
8. Représenter graphiquement l’arbre de décision associé à 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟏 (utiliser la fonction export_graphviz de la
bibliothèque [Link] et la fonction Source de la bibliothèque graphviz)
9. Générer les règles de décisions associées à 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟏 (utiliser la fonction export_text de la bibliothèque
[Link])
10. Représenter graphiquement la matrice de confusion associée aux données d'apprentissage en utilisant le
modèle 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟏 (utiliser la fonction heatmap de la bibliothèque seaborn)
11. Calculer le taux de classification correcte (Accuracy) associé aux données d’apprentissage (utiliser la fonction
accuracy_score de la bibliothèque [Link])
12. Représenter la matrice de confusion associée aux données de test selon 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟏 . Puis, calculer le taux de
classification correcte, la sensitivité, et la précision de la classe "+"
13. Générer un modèle, nommé 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟐, correspondant à un arbre de décision CART dont la profondeur maximale
d’arbre est égal à 3 (max_depth=3), et le nombre de descripteurs à examiner pour trouver la meilleure répartition est
égal à √n_feat (max_features="sqrt")
14. Représenter la matrice de confusion associée 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟐 en appliquant 10-validations croisées (utiliser la fonction
cross_val_predict de la bibliothèque sklearn.model_selection). Déduire l’Accuracy de 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟐
Bon Travail
2/2