Aller au contenu
MLOps medium

Régression linéaire : définition et exemple en Python

9 min de lecture

La régression linéaire est une méthode de machine learning supervisé qui prédit une valeur numérique en modélisant la relation entre variables par une droite. Elle répond à des questions du type « quel prix pour cette surface ? » ou « quelles ventes pour ce budget publicitaire ? », en traçant la droite qui colle au mieux aux données observées.

Ce guide définit la régression linéaire, explique la droite des moindres carrés, la met en oeuvre avec scikit-learn (code testé), montre comment l'évaluer avec le coefficient de détermination R², et distingue régression simple et multiple. Il approfondit la classification et la régression supervisées.

  • Définir la régression linéaire et son principe.
  • Comprendre la droite des moindres carrés.
  • Entraîner un modèle avec scikit-learn et prédire une valeur.
  • Évaluer un modèle avec et le RMSE.
  • Distinguer régression simple et régression multiple.

La régression linéaire cherche la droite qui résume le mieux la relation entre une variable à prédire et une ou plusieurs variables explicatives. Avec une seule variable explicative, cette droite s'écrit :

y = a * x + b

a est la pente (de combien y augmente quand x augmente de 1) et b l'ordonnée à l'origine (la valeur de y quand x vaut 0). Le modèle apprend les valeurs de a et b qui minimisent l'erreur sur les données connues.

C'est de l'apprentissage supervisé : on fournit des exemples où la réponse est connue, et le modèle prédit ensuite la valeur pour de nouvelles entrées. Contrairement à la classification, la sortie est une valeur continue, pas une catégorie.

Comment trouver la « meilleure » droite ? En minimisant la somme des carrés des écarts entre les points réels et la droite : c'est la méthode des moindres carrés. Élever au carré évite que les écarts positifs et négatifs s'annulent, et pénalise fortement les grosses erreurs.

Entraîner une régression linéaire avec scikit-learn

Section intitulée « Entraîner une régression linéaire avec scikit-learn »

Installez les bibliothèques avec des versions épinglées :

Fenêtre de terminal
pip install scikit-learn==1.9.0 numpy==2.5.1 matplotlib==3.11.0

On génère des données de démonstration, on sépare en jeu d'entraînement et de test, puis on entraîne le modèle :

from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_squared_error
# Données : 100 points avec du bruit
X, y = make_regression(n_samples=100, n_features=1, noise=15, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Entraînement
model = LinearRegression().fit(X_train, y_train)
y_pred = model.predict(X_test)
print("Pente :", round(float(model.coef_[0]), 2))
print("Ordonnée :", round(float(model.intercept_), 2))
print("R2 :", round(r2_score(y_test, y_pred), 3))
print("RMSE :", round(mean_squared_error(y_test, y_pred) ** 0.5, 2))

La sortie donne l'équation apprise et la qualité du modèle :

Pente : 45.5
Ordonnée : 0.15
R2 : 0.874
RMSE : 15.31

Le modèle a appris la droite y = 45.5 * x + 0.15. Superposée aux données, elle suit bien la tendance :

Nuage de points avec la droite de régression linéaire en rouge qui suit la tendance des données

Deux indicateurs complémentaires mesurent la qualité d'une régression.

  • Le coefficient de détermination R² : la part de la variation expliquée par le modèle, entre 0 et 1. Un R² de 0.874 signifie que le modèle explique 87 % de la variabilité des données. Plus il est proche de 1, mieux c'est.
  • Le RMSE (racine de l'erreur quadratique moyenne) : l'erreur moyenne de prédiction, dans l'unité de la variable cible. Un RMSE de 15.31 signifie que les prédictions se trompent en moyenne d'environ 15 unités.

Le dit quelle proportion est expliquée, le RMSE dit de combien on se trompe. On les regarde ensemble.

La régression linéaire simple utilise une seule variable explicative (une droite). La régression multiple en utilise plusieurs : le modèle apprend alors un plan ou un hyperplan, avec un coefficient par variable.

Simple : y = a * x + b
Multiple : y = a1 * x1 + a2 * x2 + ... + b

Le code scikit-learn est identique : il suffit de fournir un X à plusieurs colonnes. La régression multiple est la plus fréquente en pratique, car un phénomène dépend rarement d'un seul facteur.

La régression linéaire sert dès qu'on veut prédire une quantité à partir de facteurs mesurables :

  • Estimation de prix : immobilier, véhicules d'occasion, selon leurs caractéristiques.
  • Prévision de ventes en fonction du budget marketing ou de la saison.
  • Analyse d'impact : mesurer l'effet d'une variable sur une autre.
  • Base de référence : c'est le modèle le plus simple, celui auquel on compare des modèles plus complexes.

C'est une méthode qui prédit une valeur numérique en modélisant la relation entre variables par une droite. Le modèle apprend la pente et l'ordonnée qui collent le mieux aux données observées.

Comment fonctionne la méthode des moindres carrés ?

Section intitulée « Comment fonctionne la méthode des moindres carrés ? »

Elle cherche la droite qui minimise la somme des carrés des écarts entre les points réels et la droite. Le carré évite l'annulation des écarts et pénalise les grosses erreurs.

Qu'est-ce que le coefficient de détermination R² ?

Section intitulée « Qu'est-ce que le coefficient de détermination R² ? »

Le R² mesure la part de la variation expliquée par le modèle, entre 0 et 1. Un R² de 0.9 signifie que le modèle explique 90 % de la variabilité des données.

Quelle différence entre régression et classification ?

Section intitulée « Quelle différence entre régression et classification ? »

La régression prédit une valeur continue (un prix, une température). La classification prédit une catégorie (spam ou non). Toutes deux relèvent de l'apprentissage supervisé.

  1. La régression linéaire prédit une valeur continue avec une droite y = a*x + b.
  2. La méthode des moindres carrés trouve la droite qui minimise les carrés des écarts.
  3. scikit-learn l'entraîne en quelques lignes avec LinearRegression.
  4. On évalue avec R² (part expliquée) et RMSE (erreur moyenne).
  5. La régression multiple généralise à plusieurs variables, avec le même code.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn