Activité 4.1 Régression linéaire Multiple
Cette activité propose une introduction pratique à la régression linéaire multiple en Python. Elle permet d’illustrer l’application d’un modèle linéaire multiple (MLM) pour comprendre les relations entre variables et réaliser des prédictions. L’activité utilise un jeu de données simple sur les ventes et les investissements publicitaires dans différents médias.
D'après le document Activité 4.1 Régression linéaire Multiple
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Programming, Data Science, Machine Learning · PDF · 4 pages
Afficher l'aperçu du document
Cette activité propose une introduction pratique à la régression linéaire multiple en Python. Elle permet d’illustrer l’application d’un modèle linéaire multiple (MLM) pour comprendre les relations entre variables et réaliser des prédictions. L’activité utilise un jeu de données simple sur les ventes et les investissements publicitaires dans différents médias. Pour la réaliser, il est nécessaire d’avoir Python installé, ainsi que les bibliothèques Pandas, NumPy, Matplotlib et scikit-learn.
Objectifs
- Importer et manipuler des données au format CSV avec Python.
- Appliquer un modèle de régression linéaire multiple avec scikit-learn.
- Estimer les paramètres du modèle par la méthode des moindres carrés.
- Évaluer la qualité du modèle avec le coefficient de détermination R² et le RMSE.
- Visualiser les résultats et interpréter les relations entre variables.
Prérequis et installation
- Python 2.7 ou Python 3.5 (les bibliothèques utilisées sont compatibles avec ces versions).
- Installation d’Anaconda recommandée pour disposer facilement des bibliothèques Pandas, NumPy, Matplotlib et scikit-learn.
- Connaissances de base en Python et en statistiques, notamment sur la régression linéaire.
- Fichier de données
Advertising.csvcontenant les variables de ventes et d’investissements publicitaires.
Chargement des données et des bibliothèques
La première étape consiste à importer les bibliothèques nécessaires et à charger les données au format CSV. Python ne dispose pas nativement d’une fonction pour lire les fichiers CSV, c’est pourquoi on utilise la bibliothèque Pandas. NumPy est utile pour les calculs numériques et Matplotlib pour les visualisations.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# importer les données Advertising.csv
donnees = pd.read_csv('Advertising.csv', index_col=0)
donnees.head()
Le fichier est chargé dans un DataFrame Pandas nommé donnees. La commande donnees.head() affiche les premières lignes pour vérifier l’importation.
Application du modèle de régression linéaire multiple
On crée un objet modeleReg à partir de la classe LinearRegression de la bibliothèque scikit-learn. Cet objet contiendra le modèle de régression multiple. La variable dépendante y est la colonne « Sales » (nombre de ventes), et les variables indépendantes X sont les colonnes restantes correspondant aux investissements publicitaires par média.
from sklearn.linear_model import LinearRegression
# créer un objet de régression linéaire
modeleReg = LinearRegression()
# définir y et X
list_var = donnees.columns.drop("Sales")
y = donnees.Sales
X = donnees[list_var]
# ajuster le modèle aux données
modeleReg.fit(X, y)
La méthode fit calcule les coefficients du modèle par la méthode des moindres carrés.
Affichage et interprétation des résultats
Une fois le modèle ajusté, on affiche :
- La constante (ordonnée à l’origine) du modèle.
- Les coefficients associés à chaque variable indépendante.
- Le coefficient de détermination R², qui mesure la qualité d’explication du modèle.
- Le RMSE (Root Mean Square Error), racine de la moyenne des carrés des erreurs, qui évalue la qualité de prédiction.
On trace également deux graphiques :
- Les valeurs observées de
yen fonction des valeurs prédites par le modèle. - Les valeurs observées de
yen fonction des résidus (différences entre valeurs observées et prédites).
print modeleReg.intercept_
print modeleReg.coef_
# calcul du R²
print modeleReg.score(X, y)
# calcul du RMSE
RMSE = np.sqrt(((y - modeleReg.predict(X))**2).sum() / len(y))
print RMSE
# graphique des valeurs observées vs prédites
plt.plot(y, modeleReg.predict(X), '.')
plt.show()
# graphique des valeurs observées vs résidus
plt.plot(y, y - modeleReg.predict(X), '.')
plt.show()
Un bon modèle aura un R² proche de 1, indiquant que la majorité de la variance de y est expliquée par les variables indépendantes. Un RMSE faible signifie que les prédictions sont proches des observations. Le premier graphique doit montrer une relation linéaire proche de la diagonale, tandis que le second doit présenter des résidus aléatoires sans tendance apparente.
Résultats attendus
Après exécution du code, vous devez obtenir :
- Une valeur de constante (intercept) correspondant à la valeur de
ylorsque toutes les variables indépendantes sont nulles. - Un vecteur de coefficients indiquant l’impact de chaque média sur les ventes.
- Un R² élevé, montrant que le modèle explique bien les variations des ventes.
- Un RMSE faible, indiquant une bonne précision des prédictions.
- Un graphique des valeurs observées vs prédites aligné sur la diagonale.
- Un graphique des résidus sans structure particulière, montrant une bonne adéquation du modèle.
Pièges courants
- Ne pas installer les bibliothèques nécessaires ou utiliser une version incompatible de Python peut empêcher l’exécution du code.
- Oublier de spécifier
index_col=0lors de la lecture du CSV peut fausser les données. - Confondre variables dépendantes et indépendantes dans la définition de
yetX. - Interpréter un R² faible comme un échec sans vérifier la pertinence des variables choisies.
- Ne pas vérifier les graphiques, qui permettent de détecter des problèmes de modèle (par exemple, résidus non aléatoires indiquant un modèle mal adapté).
Commentaires
Aucun commentaire pour le moment. Posez la première question.