TP4 ML
TP4 ML
TP4 ML
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 :
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.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
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
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-
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
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.
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.