La régression linéaire prédit une valeur continue en supposant une relation linéaire : y ≈ β₀ + β₁·x₁ + β₂·x₂ + ... + ε
Les coefficients (βᵢ) sont appris pour minimiser la somme des carrés des erreurs (moindres carrés).
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_scoreX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)Attributs après fit :
model.coef_ array des coefficients β₁, β₂, ...
model.intercept_ β₀ (ordonnée à l'origine)MSE (mean squared error) → moyenne des (y_pred - y_true)²
RMSE → √MSE (même unité que y, plus interprétable)
MAE (mean absolute error) → moyenne des |y_pred - y_true|
R² (coefficient de détermination) → proportion de variance expliquée
R² = 1 modèle parfait
R² = 0 pas mieux que prédire la moyenne
R² < 0 pire que la moyenne (modèle inadapté)from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
rmse = np.sqrt(mean_squared_error(y_test, y_pred))X = np.random.uniform(0, 10, (100, 1))
y = 3 * X.ravel() + 7 + np.random.normal(0, 2, 100)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)print(f'Coef: {model.coef_[0]:.2f}') # ~ 3
print(f'Intercept: {model.intercept_:.2f}') # ~ 7
print(f'R²: {r2_score(y_test, y_pred):.4f}')
print(f'RMSE: {np.sqrt(mean_squared_error(y_test, y_pred)):.2f}')Avant de partir sur un modèle complexe (forest, neural net), toujours essayer une régression linéaire comme baseline.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →