Machine Learning (ML)
TP5 : Régression Linéaire sur un cas réel avec Scikit-Learn
Dans le précédent TP, nous avons abordé les bases de la régression linéaire et de la descente
de gradient. Pour mettre en pratique cela, nous allons vous montrer pas à pas une application
concrète d’une régression linéaire sur un cas réel avec Scikit-Learn. Ainsi, on va pouvoir
appliquer les concepts que nous avons appris sur des données réelles.
Objectifs :
Extraction des données depuis un lien web
Créer une heatmap de la matrice de corrélation pour analyser les relations
entre les variables de l'ensemble de données
Vous pouvez utiliser la bibliothèque scikit-learn pour construire et
entraîner un modèle.
Évaluer la performance d'un modèle de régression linéaire en calculant des
métriques telles que le RMSE et le R² sur les ensembles d'entraînement et
de test.
Notion de base :
L’objectif principal du Machine Learning est de construire un bon modèle. Dans la pratique,
les Data Scientists utilisent le package sklearn, qui permet d’écrire un tel code en 4 lignes. Il
est la librairie qui contient toutes les fonctions de l’état de l’art du Machine Learning. On y
trouve les algorithmes les plus importants ainsi que diverses fonctions de pre-processing.
Dr. Mohamed HAYOUNI et Mlle. Fatma JEMAI
1
Exercice : Prédiction des prix des maisons à Boston
Vous avez à votre disposition un ensemble de données sur les prix des maisons à Boston.
L'objectif de cet exercice est de construire un modèle de régression linéaire pour prédire les
prix des maisons en fonction de certaines caractéristiques.
Etape 1 : Importer les librairies
1. Importez les bibliothèques nécessaires :
Importez la bibliothèque NumPy pour effectuer des calculs numériques
efficaces
Importez la bibliothèque [Link] pour créer des graphiques et
des visualisations
Importez la bibliothèque Pandas pour manipuler et analyser des données
tabulaires (DataFrames)
Importez la bibliothèque Seaborn pour créer des graphiques statistiques et
des visualisations de données
Code :
scikit-learn :
Importez la fonction train_test_split de la bibliothèque scikit-learn
(sklearn) pour diviser les données en ensembles d'entraînement et
de test
Importez la classe StandardScaler de scikit-learn pour standardiser
les caractéristiques (mise à l'échelle)
Importez la classe LinearRegression de scikit-learn pour créer un
modèle de régression linéaire
Importez les fonctions mean_squared_error et r2_score de scikit-
learn pour évaluer la performance du modèle
Code :
Dr. Mohamed HAYOUNI et Mlle. Fatma JEMAI
2
Etape 2 : Extraction des données depuis un lien web
Nous allons prendre le dataset Boston Housing qui contient des informations sur différentes
maisons à Boston. Ce dataset contient 506 échantillons et 13 variables de features
(caractéristiques). L’objectif est de prédire la valeur du prix des maisons en utilisant les
features données.
2. Chargez les données du Boston Housing depuis l'URL :
[Link]
Code :
3. Combinez les données en un seul tableau (data) et les prix médians en un vecteur
(target)
Code :
4. Listez toutes les colonnes de la description
Code :
Etape 3 : Création du DataFrame de données
5. Créez un DataFrame ‘boston’ contenant les données
Code :
6. Affichez les 5 premières lignes du DataFrame
Dr. Mohamed HAYOUNI et Mlle. Fatma JEMAI
3
Résultat :
7. Ajoutez une colonne MEDV (Valeur médiane des maisons occupées par leur
propriétaire en 1 000 $) au DataFrame boston pour stocker les prix médians des
maisons
Code :
8. Affichez les 5 premières lignes du DataFrame
Résultat :
Etape 4 : Pré-traitement des données
Après avoir chargé les données, il est bon de vérifier s’il y a des valeurs manquantes dans les
données.
9. Vérifiez s'il y a des valeurs manquantes dans le DataFrame boston
Code :
10. Quesque vous remarqué ?
Dr. Mohamed HAYOUNI et Mlle. Fatma JEMAI
4
Etape 5 : Analyse exploratoire des Données
Ensuite, nous créons une matrice de corrélation qui mesure les relations linéaires entre les
variables. La matrice de corrélation peut être créée à l’aide de la fonction .corr() sur un
DataFrame depuis la bibliothèque pandas. Nous utiliserons la fonction heatmap() de la
bibliothèque seaborn pour tracer la matrice de corrélation.
11. Calculez la matrice de corrélation entre toutes les caractéristiques du
DataFrame `boston`.
12. Affichez la matrice de corrélation sous forme d'une heatmap.
13. Écrivez un code en utilisant Matplotlib pour créer une figure de 10 par 8 pouces
qui affiche une heatmap de la matrice de corrélation de cet ensemble de données
14. Enregistrez la heatmap que vous avez créée sous le nom de fichier 'Matrice de
Corré[Link]' et affiche la heatmap sur votre écran.
Résultat :
Le coefficient de corrélation varie de -1 à 1. Si la valeur est proche de 1, cela signifie qu’il
existe une forte corrélation positive entre les deux variables. Lorsqu’il est proche de -1, les
variables ont une forte corrélation négative.
Dr. Mohamed HAYOUNI et Mlle. Fatma JEMAI
5
Etape 6 : Préparation des variables pour le modèle
Pour entraîner un modèle de régression linéaire, nous sélectionnons les features qui ont
une forte corrélation avec notre variable cible MEDV. En regardant la matrice de
corrélation, nous pouvons voir que RM a une forte corrélation positive avec MEDV
(0,7) alors que LSTAT a une forte corrélation négative avec MEDV (-0,74).
Un point important dans la sélection des features pour un modèle de régression linéaire
est de vérifier la multi-colinéarité. Les featuress RAD, TAX ont une corrélation de 0,91.
Ces paires de features sont fortement corrélées entre elles. Nous ne devrions donc pas
sélectionner ces deux features ensemble pour entraîner le modèle. Il en va de même pour
les features DIS et AGE qui ont une corrélation de -0,75.
Sur la base des observations ci-dessus, nous choisirons RM (nombre moyen de pièces par
logement) et LSTAT (statut inférieur de la population) comme features varient avec
MEDV.
15. Créez un DataFrame `X` contenant ces deux caractéristiques et un vecteur `Y`
contenant les prix médians.
16. Divisez les données en un ensemble d'entraînement (70%) et un ensemble de test
(30%) en utilisant `train_test_split` de scikit-learn.
17. Affichez les dimensions des ensembles d'entraînement et de test.
Code :
Etape 7 : Création et Entraînement du modèle
18. Nous utilisons la fonction LinearRegression de Scikit-learn pour entraîner notre
modèle sur l’ensemble d’entraînement.
Code :
Dr. Mohamed HAYOUNI et Mlle. Fatma JEMAI
6
Etape 8 : Évaluation du modèle
19. Évaluez la performance du modèle sur l'ensemble d'entraînement en calculant la
racine carrée de l'erreur quadratique moyenne (RMSE) et le coefficient de
détermination R².
20. Affichez ces métriques.
Code :
21. Évaluez la performance du modèle sur l'ensemble de test en calculant le RMSE
et le R².
22. Affichez ces métriques.
23. En utilisant la bibliothèque Seaborn, tracez un graphique de dispersion (scatter
plot) qui affiche Y_test sur l'axe des x (valeurs réelles) et y_test_predict sur l'axe
des y (valeurs prédites).
Code :
Dr. Mohamed HAYOUNI et Mlle. Fatma JEMAI
7