Vous êtes sur la page 1sur 2

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 credit.csv.
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 credit.csv

Le Tableau 2 montre un extrait du jeu de données credit.csv


𝑨𝟏 𝑨𝟐 𝑨𝟑 𝑨𝟒 𝑨𝟓 𝑨𝟔 𝑨𝟕 𝑨𝟖 𝑨𝟗 𝑨𝟏𝟎 𝑨𝟏𝟏 𝑨𝟏𝟐 𝑨𝟏𝟑 𝑨𝟏𝟒 𝑨𝟏𝟓 𝑪
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 credits.csv

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 : "TP2.pdf", "TP2_DM.ipynb",
et "credit.csv". Puis, importer le jeu de données credit.csv dans Google drive, et de lancer Google colab.
Importation des bibliothèques
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split, cross_val_predict
from sklearn.preprocessing import OneHotEncoder
from sklearn.tree import DecisionTreeClassifier, export_graphviz, export_text
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score
from graphviz import Source
import warnings
warnings.filterwarnings('ignore')

Travail à faire :
1. Charger le jeu de donnée credits.csv 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 sklearn.preprocessing).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 sklearn.tree sans modifier ses paramètres)
8. Représenter graphiquement l’arbre de décision associé à 𝒄𝒍𝒔_𝒄𝒓𝒆𝒅𝒊𝒕𝟏 (utiliser la fonction export_graphviz de la
bibliothèque sklearn.tree 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
sklearn.tree)
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 sklearn.metrics)
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

Vous aimerez peut-être aussi