Vous êtes sur la page 1sur 10

Ecole Mohammadia d'Ingénieurs Génie Informatique

Département Informatique 3ème Année

6 Machine Learning : Sickit-Learn


6.1 Objectif Global
Dans ce présent TP, on va essayer d’exploiter le potentiel de Sickit-Learn pour réaliser la
classification, la régression linéaire et le clustering. En effet, Sickit-Learn est une librairie
fournissant un ensemble de fonctions prédéfinies de Machine Learning.
Pour tout processus ML, on divise le dataset en deux parties :
 Train set : est la partie qui permet à l’algorithme de faire l’apprentissage
 Test set : est la partie qui permet de vérifier l’efficacité de l’apprentissage
6.1.1 Classification
Le processus de classification permet de classer l’ensemble des données en différentes classes.
6.1.1.1 Matrice de confusion
Une matrice de confusion (Confusion Matrix) ou tableau de contingence est un résumé des
résultats de prédictions sur un problème de classification. Les prédictions correctes et
incorrectes sont mises en lumière et réparties par catégorie. Les résultats sont ainsi comparés
avec les valeurs réelles. Elle permet de comprendre de quelle façon le modèle de classification
est confus lorsqu’il effectue des prédictions.
Calcul de la matrice de confusion :
 A partir des résultats obtenus par le modèle entraîné et des prédictions, la matrice indique le
nombre de prédictions correctes pour chaque classe et le nombre de prédictions incorrectes
pour chaque classe organisée en fonction de la classe prédite. Chaque ligne du tableau
correspond à une classe prédite, et chaque colonne correspond à une classe réelle.
 Dans les lignes sous les classes réelles, les prédictions ou les résultats sont inscrits. Ces
résultats peuvent être l’indication correcte d’une prédiction positive comme ” vraie positive
” (true positive) et d’une prédiction négative comme ” vraie négative ” (true negative), ou
une prédiction positive incorrecte comme ” fausse positive ” (false positive) et une prédiction
négative incorrecte comme ” fausse négative ” (false negative) :
o TP (True Positive) : les cas où la prédiction est positive, et où la valeur réelle est
effectivement positive. Exemple : le médecin vous annonce que vous êtes enceinte, et
vous êtes bel et bien enceinte.
o TN (True Negative) : les cas où la prédiction est négative, et où la valeur réelle est
effectivement négative. Exemple : le médecin vous annonce que vous n’êtes pas
enceinte, et vous n’êtes effectivement pas enceinte.
o FP (False Positive) : les cas où la prédiction est positive, mais où la valeur réelle est
négative. Exemple : le médecin vous annonce que vous êtes enceinte, mais vous n’êtes
pas enceinte.
o FN (False Negative) : les cas où la prédiction est négative, mais où la valeur réelle est
positive. Exemple : le médecin vous annonce que vous n’êtes pas enceinte, mais vous
êtes enceinte.

Asmae EL KASSIRI – Driss NAMLY - Karim BOUZOUBAA 35


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

6.1.1.2 Mesures de performance


À partir de la matrice de confusion on peut dériver un ensemble de critères de performance.
Voici quelques exemples de mesures de performance souvent utilisées :
 Accuracy (justesse), est la proportion de prédictions correctes (à la fois de vrais positifs et
de vrais négatifs) parmi le nombre total de cas examinés (correct classifications / all
classifications)
 La Précision, c’est-à-dire la proportion de prédictions correctes parmi les points que l’on a
prédits positifs
 Le Rappel ("recall" en anglais) est le taux de vrais positifs, c’est à dire la proportion de
positifs que l’on a correctement identifiés
 La « F-mesure » pour évaluer un compromis entre rappel et précision, qui est leur moyenne
harmonique

6.1.2 Régression
La régression dans l'apprentissage automatique consiste en des méthodes mathématiques qui
permettent aux scientifiques des données de prédire un résultat continu (y) basé sur la valeur
d'une ou plusieurs variables prédictives (x). La régression linéaire est probablement la forme la
plus populaire d'analyse de régression en raison de sa facilité d'utilisation pour la prédiction et
la prévision.
Pour évaluer un modèle de régression :
 On peut calculer la distance entre valeurs prédites et vraies valeurs. Cela nous donne :
o la somme des carrés des résidus (RSS) ;
o la moyenne de cette somme (MSE) ;
o la racine carrée de cette moyenne (RMSE).
 On peut préférer calculer la corrélation entre valeurs prédites et vraies valeurs :
o l'erreur carrée relative (RSE) ;
o le coefficient de détermination (R2).
6.1.2.1 Mesures de performances : RSS et MSE
La somme des carrés des résidus, ou RSS, pour Residual Sum of Squares. On calcule pour
chaque point xi du jeu de test la distance entre son étiquette et la valeur prédite et en faire la
somme :

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 36


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

Le problème de la RSS, c'est qu'elle est d'autant plus grande qu'on a de données. Pour cette
raison, elle a été normalisée par le nombre n de points dans le jeu de test qui est la MSE
L'erreur quadratique moyenne, ou MSE, pour Mean Squared Error :

6.1.2.2 RMSE et RMSLE


La RMSE, ou Root Mean Squared Error est la racine de la MSE pour se ramener à l’unité de y,
alors que la RMSLE (Root Mean Squared Log Error).
En fait, la RMSE ne se comporte pas très bien quand les étiquettes peuvent prendre des valeurs
qui s'étalent sur plusieurs ordres de grandeur. Imaginons faire une erreur de 100 unités sur une
étiquette qui vaut 4 ; le terme correspondant dans la RMSE vaut 1002=10000. C'est exactement
la même chose que si on fait une erreur de 100 unités sur une étiquette qui vaut 8000. Pour
prendre cela en compte, on peut passer les valeurs prédites et les vraies valeurs au log avant de
calculer la RMSE

6.1.2.3 Mesures de performance : RSE et R2


L'erreur carrée relative (RSE) est la RSS normalisée par la somme des carrés des distances entre
les étiquettes et leur moyenne, elle est en fait le complément à 1 du coefficient de
détermination (R2), qui est le carré de la corrélation de Pearson entre valeurs prédites et vraies
valeurs.

6.1.3 Clustering
Le clustering est une méthode d’apprentissage automatique qui consiste à regrouper des points
de données par similarité ou par distance. C’est une méthode d’apprentissage non supervisée et
une technique populaire d’analyse statistique des données. Pour un ensemble donné de points,
vous pouvez utiliser des algorithmes de classification pour classer ces points de données
individuels dans des groupes spécifiques.
Il existe différentes fonctions à l'aide desquelles nous pouvons évaluer les performances des
algorithmes de clustering.
6.1.3.1 Index Rand ajusté
Rand Index est une fonction qui calcule une mesure de similarité entre deux regroupements.
Pour ce calcul, l'index rand considère toutes les paires d'échantillons et les paires de comptage
qui sont assignées dans les clusters similaires ou différents dans le clustering prédit et vrai.
Ensuite, le score brut de l'indice Rand est « ajusté pour le hasard » dans le score de l'indice

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 37


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

6.1.3.2 Score basé sur les informations mutuelles


L'information mutuelle est une fonction qui calcule l'accord des deux affectations. Il ignore les
permutations. Les versions suivantes sont disponibles :
 Information mutuelle normalisée (NMI) : Scikit learn avoir
sklearn.metrics.normalized_mutual_info_score module.
 Informations mutuelles ajustées (AMI) : Scikit learn avoir
sklearn.metrics.adjusted_mutual_info_score module.
6.1.3.3 Score de Fowlkes-Mallows
La fonction Fowlkes-Mallows mesure la similitude de deux regroupements d'un ensemble de
points. Elle peut être définie comme la moyenne géométrique de la précision et du rappel par
paires.

Mathématiquement :
6.1.3.4 Coefficient de silhouette
La fonction Silhouette calculera le coefficient de silhouette moyen de tous les échantillons en
utilisant la distance moyenne intra-cluster et la distance moyenne du cluster le plus proche pour
chaque échantillon.

Mathématiquement :
S= gauche(ba droite)/max gauche(a,b droite)
Ici, a est la distance intra-cluster.
et b est la distance moyenne du groupe le plus proche.
6.1.3.5 Matrice de contingence
Cette matrice indiquera la cardinalité d'intersection pour chaque paire de confiance de (vrai,
prédit). La matrice de confusion pour les problèmes de classification est une matrice de
contingence carrée.
6.2 Environnement de travail
Afin d’assurer les présents TP, il faut installer les bibliothèques suivantes :
6.2.1 Sickit-learn
Scikit-learn est une bibliothèque libre Python destinée à l'apprentissage automatique. Elle est
développée par de nombreux contributeurs notamment dans le monde académique. Elle est
écrite en Python, avec quelques algorithmes essentiels écrits en Cython pour optimiser les
performances.
L’installation de Sickit-learn passe par les étapes suivantes :
1. L’installation de pip :
a. Téléchargez get-pip.py dans un dossier de votre ordinateur.
b. Ouvrez l’invite de commande et accédez au dossier contenant le programme
d’installation get-pip.py.
c. Exécutez la commande suivante : python get-pip.py

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 38


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

d. pip est maintenant installé ! Nous pouvons vérifier que Pip a été installé correctement
en ouvrant l’invite de commande et en entrant la commande suivante : pip -V
2. L’installation de Scikit-Learn :
pip install -U scikit-learn
python -m pip show scikit-learn # to see which version and where scikit-learn is installed
python -m pip freeze # to see all packages installed in the active virtualenv
python -c "import sklearn; sklearn.show_versions()"
6.2.2 Panda
Pandas est une bibliothèque écrite pour le langage de programmation Python permettant la
manipulation et l'analyse des données. Elle propose en particulier des structures de données et
des opérations de manipulation de tableaux numériques et de séries temporelles.
Elle permet de :
 Manipuler des tableaux de données avec des étiquettes de variables (colonnes) et d'individus
(lignes) ;
 Ces tableaux sont appelés DataFrames ;
 On peut facilement lire et écrire ces dataframes à partir ou vers un fichier tabulé ;
 On peut faciler tracer des graphes à partir de ces DataFrames grâce à matplotlib.
Installer Panda :
pip install pandas
ou :
py -m pip install pandas
6.2.3 Six et Ipython
IPython est un terminal interactif, ou shell, pour le langage de programmation Python qui
propose des fonctionnalités telles que l'introspection, une syntaxe additionnelle, la complétion
et un historique riche.
Installation : pip install ipython
Six est une bibliothèque de compatibilité Python⋅2 et⋅3. Elle fournit des fonctions utilitaires
pour aplanir les différences entre les versions Python dans le but d'écrire du code Python qui
soit compatible avec les deux versions de Python.
Installation : pip install six
6.3 Classification
6.3.1 SVM (SVM.py)
Les Support Vector Machines (SVM) sont un ensemble de techniques d’apprentissage
supervisé qui ont pour objectif de trouver, dans un espace de dimension N>1, l’hyperplan qui
divise au mieux un jeu de donnée en deux. Les SVM sont des séparateurs linéaires, c’est-à-dire
que la frontière séparant les classes est une droite.
L’objectif est donc d’exécuter le programme sans ajouter du code. Le programme utilise un
dataset disponible dans sickit-learn par la fonction datasets.load_iris() (https://scikit-

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 39


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

learn.org/stable/modules/generated/sklearn.datasets.load_iris.html ) qui représente le problème


de classification de fleurs en 3 classes (comme vu dans le TP Machine Learning : classification)

6.3.2 Naives Bayes (NB.py)


Naive Bayes Classifier est un algorithme populaire en Machine Learning. C’est un algorithme
du Supervised Learning utilisé pour la classification. Il est particulièrement utile pour les
problématiques de classification de texte. Un exemple d’utilisation du Naive Bayes est celui du
filtre anti-spam.
L’objectif est d’exécuter le programme avec ajout du code. Le programme utilise un dataset
disponible dans sickit-learn par la fonction datasets.load_breast_cancer() (https://scikit-
learn.org/stable/modules/generated/sklearn.datasets.load_breast_cancer.html ) qui représente
le problème de classification d’un ensemble de données sur le cancer du sein au Wisconsin,
USA. L’objectif est d’implémenter la division du dataset en train set et test, faire la prédiction,
calculer la précision et la matrice de confusion.

6.3.3 Decision Tree (DecisionTree.py)


Un arbre de décision est une représentation visuelle d’un algorithme de classification de
données suivant différents critères qu’on appellera décisions (ou nœuds).
L’objectif est d’exécuter les programmes sans ajouter du code. Le programme utilise le dataset
fourni diabates.csv. L’objectif est de charger et diviser les données, faire l’apprentissage, tester,
puis évaluer le modèle en utilisant la matrice de confusion, le rapport de classification (qui
afficher la précision, le rappel, le F1, le support, et la précision) et l’accuracy.

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 40


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

L’objectif est également de générer l’arbre de décision représentant le modèle de machine


learning et de le visualiser.

6.3.4 Logistic Regression (Logistic_R.py)


La régression logistique est un modèle de régression binomiale. Il s'agit de modéliser au mieux
un modèle mathématique simple à des observations réelles nombreuses. En d'autres termes, il
s’agit d’associer à un vecteur de variables aléatoires (x1, x2, …, xk) une variable aléatoire
binomiale génériquement notée y.
L’objectif est donc d’exécuter le programme sans ajouter du code. Le programme utilise un
dataset disponible dans sickit-learn par la fonction load_digits() (https://scikit-
learn.org/stable/modules/generated/sklearn.datasets.load_digits.html) qui est constitué de
chiffres générés de façon aléatoire. On fait la régression logistique, on teste puis on affiche la
matrice de confusion et la précision.

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 41


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

6.3.5 Logistic Regression avec Cross validation (Logistic_R-Cross.py)


L’objectif est d’exécuter un exemple de Régression logistique en utilisant la Cross-validation
K-Fold.
La validation croisée aide à l'évaluation des modèles d'apprentissage automatique. Cette
méthode statistique aide à comparer et à sélectionner le modèle en apprentissage automatique
appliqué. L'ensemble de données se divise en un nombre K. Il divise l'ensemble de données au
point où l'ensemble de test utilise chaque ensemble.
Comprenons le concept à l'aide de la validation croisée 5 fois ou K+5 : la méthode divisera
l'ensemble de données en cinq volets. Le modèle utilise le premier pli de la première itération
pour tester le modèle. Il utilise les ensembles de données restants pour entraîner le modèle. Le
deuxième volet aide à tester l'ensemble de données et d'autres supports avec le processus de
formation. Le même processus se répète jusqu'à ce que l'ensemble de test utilise chaque pli des
cinq plis.
On va donc exécuter le programme sans ajouter du code. Le code réutilise le dataset fourni
diabates.csv.

6.4 Linear Regression (LR.py)


L’algorithme de régression linéaire est un algorithme d’apprentissage supervisé c’est-à-dire
qu’à partir de la variable cible ou de la variable à expliquer (Y), le modèle a pour but de faire
une prédiction grâce à des variables dites explicatives (X) ou prédictives (voir Machine
Learning : regression linéaire)

L’objectif est d’exécuter le programme avec ajout du code. Le programme utilise un dataset
disponible dans sickit-learn par la fonction datasets.load_diabetes() (https://scikit-
learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html ) qui représente le
problème de prédiction de la progression du taux du diabète une année après en fonction de 10

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 42


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

propriétés. L’objectif est d’implémenter la division du dataset en train set et test, faire la
prédiction, et d’afficher le résultat sous forme de graphe.

6.5 Clustering
Le clustering est une méthode d’apprentissage non supervisé (unsupervised learning). Chaque
ligne représente un individu (une observation). A l’issu de l’application du clustering, on
retrouvera ces données regroupées par ressemblance. Le clustering va regrouper en plusieurs
familles (clusters) les individus/objets en fonction de leurs caractéristiques. Ainsi, les individus
se trouvant dans un même cluster sont similaires et les données se trouvant dans un autre cluster
ne le sont pas.
Il existe deux types de clustering :
 Le clustering hiérarchique
 Le clustering non-hiérarchique (partitionnement)
L’objectif est d’exécuter les programmes sans ajouter du code.
6.5.1 K-means (K-means.py)
K-means (k-moyennes) est un algorithme non supervisé de clustering non hiérarchique. Il
permet de regrouper en K clusters distincts les observations du data set. Ainsi les données
similaires se retrouveront dans un même cluster. Par ailleurs, une observation ne peut se
retrouver que dans un cluster à la fois (exclusivité d’appartenance). Une même observation, ne
pourra donc, appartenir à deux clusters différents.
L’objectif est d’exécuter le programme sans ajout du code. Le programme utilise un dataset
disponible dans sickit-learn par la fonction datasets.make_blobs() (https://scikit-
learn.org/stable/modules/generated/sklearn.datasets.make_blobs.html ) qui permet de générer
des blobs gaussiens isotropes pour le clustering. On charge les données, on fait un affichage
initial, on applique l'apprentissage K-Means, puis on teste la prédiction et on passe à la fin à
l’affichage graphique des centres de clusters.

6.5.2 Mean-shift (MeanShift.py)


Mean Shift est également connu sous le nom d'algorithme de recherche de mode (Kernel
Density Estimation - KDE) qui attribue les points de données aux clusters d'une manière en
déplaçant les points de données vers la région à haute densité. La densité la plus élevée de points

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 43


Ecole Mohammadia d'Ingénieurs Génie Informatique
Département Informatique 3ème Année

de données est appelée modèle dans la région. Il a des applications largement utilisées dans le
domaine de la vision par ordinateur et de la segmentation d'images.
KDE est une méthode pour estimer la distribution des points de données. Cela fonctionne en
plaçant un noyau sur chaque point de données. Le noyau en terme mathématique est une
fonction de pondération qui appliquera des poids pour des points de données individuels.
L'ajout de tous les noyaux individuels génère la probabilité.
L’objectif est d’exécuter le programme sans ajout du code. On réutilise le même dataset du TP
précédent datasets.make_blobs(). #importer le style d'affichage. On importe le dataset, on crée
le dataset en définissant les centres initiaux et créant des clusters en fonction des centres définis,
on passe à l’affichage du dataset initial, puis on lance l'apprentissage, on passe à l’affichage des
centres des clusters, et finalement l’affichage des clusters.

Zineb AARAB – Driss NAMLY - Karim BOUZOUBAA 44

Vous aimerez peut-être aussi