Apprentissage supervisé avec Python Dr.
Ahmed Maalel
Travaux pratiques en Intelligence Artificielle
Workshop Python for Data Science
Intervenant Dr. Ahmed Maalel ahmed.maalel@ensi.rnu.tn
Atelier
Apprentissage supervisé avec Python
Contenu − Feature engineering
− Classification
− Evaluation de la qualité d’un classifieur
Dans cet atelier pratique, vous allez expérimenter des algorithmes de traitement de données pour
répondre à différents problèmes liés à l’apprentissage supervisé avec le langage Python. Python est un
langage de programmation très polyvalent et modulaire, qui est utilisé aussi bien pour écrire des
applications comme YouTube, que pour traiter des données scientifiques. Par conséquent, il existe de
multiples installations possibles de Python. L’utilisateur débutant peut donc se sentir dérouté par
l’absence d’une référence unique pour Python scientifique. Le plus simple pour ce TP est d’installer, la
suite scientifique Anaconda développée par l’entreprise Continuum :
http://continuum.io/downloads.html
Anaconda rassemble tout le nécessaire pour l’enseignement de Python scientifique : le langage Python
et ses modules scientifiques. Sur le plan des packages Python, vous allez utiliser Scikit-learn. Cette
libraire montre dans cette situation tout son intérêt. La plupart des techniques récentes d’apprentissage
sont en effet expérimentées avec Scikit-learn et le plus souvent mises à disposition de la communauté
scientifique.
Pour plus de détails concernant :
− Le langage Python vous pouvez aller sur le site suivant : http://www.python-
course.eu/index.php
− La librairie Scikit-learn vous pouvez aller sur le site suivant : http://scikit-learn.org
Pour lancer le notebook Python, il faut taper la commande jupyter notebook dans votre dossier de
travail. Une fenêtre va se lancer dans votre navigateur pour ouvrir l’application Jupyter. Créer un
nouveau notebook Python et taper le code suivant dans une nouvelle cellule :
import numpy as np
np.set_printoptions(suppress=True)
import pandas as pd
import warnings
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')
1
Apprentissage supervisé avec Python Dr. Ahmed Maalel
L’objectif dans cette partie est de construire un bon classifieur sur un jeu de données de churn du fichier
"Churn_Modelling.csv". On cherche si un client d’une banque va partir à la concurrence ou non (Exited).
1. Chargement des données :
Dans un premier temps nous allons importer le jeu de données et analyser ses caractéristiques.
• Importer ce jeu de données avec la librairie pandas (c.f. read_csv)
• Transformer votre jeu de données issue de pandas qui sera de type Data Frame en numpy Array
(c.f. values) et séparer ensuite les variables caractéristiques de la variable à prédire (status) en deux
tableaux différents.
Analyser les propriétés de vos données : taille de l’échantillon (c.f. shape), nombre d’exemples positifs
et négatifs (c.f. hist).
2
Apprentissage supervisé avec Python Dr. Ahmed Maalel
2. Séparation des données :
Séparer en deux parties une dite d’apprentissage qui servira à l’apprentissage du classifieur et l’autre dite de test
qui servira à son évaluation. La base de test contiendra 25% des indiviuds de la base totale. (c.f. train_test_split
avec un random_state=1).
3. Apprentissage et évaluation de modèles :
Utiliser ensuite sur votre jeu de données les algorithmes d’apprentissage supervisé suivants :
− Un DecisionTreeClassifier avec comme critère de séparation l’entropy et random_state=0
− Un KNeighborsClassifier avec n_neighbors=5
− Un RandomForestClassifier avec n_estimators=100 et random_state=0
− Un AdaBoostClassifier avec n_estimators=100 et random_state=0 qui existe dans le package
− sklearn.ensemble
− Un ExtraTreesClassifier avec n_estimators=100 et random_state=0 qui existe dans le package
− sklearn.ensemble
− Un Réseau de neurones (MLPClassifier) qui existe dans le package sklearn.neural_network et qui a pour
paramètres (hidden_layer_sizes=(20, 10), alpha=0.001, max_iter=200)
Si vous ne connaissez pas le fonctionnement précis de l’un de ces algorithmes, n’hésitez pas à consulter la
documentation de Scikit-learn. Attention, la plupart de ces algorithmes ont des paramètres qu’il vous faudra
prendre en compte lors de vos expérimentations. Vous en choisirez quelques-uns que vous ferez varier afin
d’observer l’effet pratique de ces paramètres sur les résultats obtenues (par exemple k pour les k-plusproches
voisins ou le nombre d’arbres dans un Random Forest).
Vous allez développer une fonction pour comparer les résultats obtenus à l’aide de plusieurs algorithmes sur
ce jeu de données. Cette comparaison s’appuiera sur l’estimation de l’accuracy_score et le recall_score. Il
faut calculer la moyenne des deux mesures pour faire votre choix.
def ClassifieurExcited (Xtrain,Xtest,Ytrain,Ytest)