Aller au contenu

Régression linéaire

La régression linéaire est un outil statistique puissant largement utilisé en apprentissage automatique et en modélisation prédictive. Elle trouve la droite de meilleure adaptation entre une variable dépendante et une ou plusieurs variables indépendantes en minimisant la somme des carrés des erreurs entre les valeurs prédites et les valeurs réelles.

Dans ce guide, nous montrerons comment implémenter la régression linéaire en Python avec scikit-learn. Nous commencerons par une brève introduction à la technique et à ses applications, puis nous détaillerons une implémentation complète.

Introduction à la régression linéaire

La régression linéaire modélise la relation entre une variable dépendante et une ou plusieurs variables indépendantes. Elle suppose une relation linéaire, ce qui signifie que les variations de la variable dépendante sont proportionnelles aux variations des variables indépendantes. Elle est largement utilisée en finance, en économie, en marketing et en ingénierie pour prédire les tendances et soutenir la prise de décision.

Il existe deux types principaux : la régression linéaire simple (une variable indépendante) et la régression linéaire multiple (deux variables indépendantes ou plus). Ce guide se concentre sur la régression linéaire multiple.

Implémentation de la régression linéaire avec Scikit-learn

Scikit-learn est une bibliothèque Python d'apprentissage automatique populaire qui fournit des outils robustes pour l'analyse et la modélisation des données. Elle inclut un module dédié à la régression linéaire, simplifiant ainsi l'implémentation du modèle.

Étape 1 : Importer les bibliothèques requises

Avant de pouvoir implémenter la régression linéaire avec scikit-learn, nous devons importer les bibliothèques requises. Nous utiliserons les bibliothèques suivantes :

Importez les bibliothèques requises pour implémenter la régression linéaire avec scikit-learn en Python :

python
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

Étape 2 : Charger le jeu de données

L'étape suivante consiste à charger le jeu de données que nous utiliserons pour entraîner notre modèle de régression linéaire. Nous utiliserons le jeu de données California Housing, qui est la norme moderne pour les tâches de régression.

Note : Le jeu de données Boston Housing a été supprimé de scikit-learn 1.4 pour des raisons éthiques. Nous utilisons à la place le jeu de données California Housing.

Chargez le jeu de données que nous utiliserons pour entraîner notre modèle de régression linéaire avec fetch_california_housing en Python :

python
from sklearn.datasets import fetch_california_housing

california = fetch_california_housing()
california_df = pd.DataFrame(california.data, columns=california.feature_names)
california_df['MedHouseVal'] = california.target

Étape 3 : Explorer le jeu de données

Avant de pouvoir entraîner notre modèle de régression linéaire, nous devons explorer le jeu de données pour en comprendre la structure et les caractéristiques. Nous pouvons le faire en convertissant le jeu de données en un dataframe pandas et en utilisant la fonction head() pour afficher les premières lignes des données.

Convertissez le jeu de données en un dataframe pandas en Python :

python
california_df.head()

Étape 4 : Préparer les données pour l'entraînement

L'étape suivante consiste à préparer les données pour l'entraînement de notre modèle de régression linéaire. Nous utiliserons les caractéristiques AveRooms et AveBedrms comme variables indépendantes, et la caractéristique MedHouseVal comme variable dépendante.

Préparez les données pour l'entraînement de notre modèle de régression linéaire multiple en Python :

python
X = california_df[['AveRooms', 'AveBedrms']]
y = california_df['MedHouseVal']

Étape 5 : Diviser les données en ensembles d'entraînement et de test

Pour évaluer les performances de notre modèle de régression linéaire, nous devons diviser les données en ensembles d'entraînement et de test. Nous utiliserons la fonction train_test_split() de scikit-learn pour diviser les données.

Divisez les données en ensembles d'entraînement et de test en Python :

python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

Étape 6 : Entraîner le modèle de régression linéaire

L'étape suivante consiste à entraîner le modèle de régression linéaire en utilisant l'ensemble d'entraînement. Nous utiliserons la méthode fit() de la classe LinearRegression pour entraîner le modèle.

Entraînez le modèle de régression linéaire avec l'ensemble d'entraînement en Python :

python
regressor = LinearRegression()
regressor.fit(X_train, y_train)

Étape 7 : Faire des prédictions sur les données de test

Une fois le modèle entraîné, nous pouvons l'utiliser pour faire des prédictions sur les données de test. Nous utiliserons la méthode predict() de la classe LinearRegression pour effectuer les prédictions.

Une fois le modèle entraîné, nous pouvons l'utiliser pour faire des prédictions sur les données de test en Python :

python
y_pred = regressor.predict(X_test)

Étape 8 : Évaluer les performances du modèle

Pour évaluer les performances de notre modèle de régression linéaire, nous utiliserons deux métriques : l'erreur quadratique moyenne (MSE) et le coefficient de détermination (R²). Nous pouvons calculer ces métriques à l'aide des fonctions mean_squared_error() et r2_score() de scikit-learn.

Calculez le MSE et le R² en Python :

python
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print('Mean Squared Error:', mse)
print('Coefficient of Determination:', r2)

Étape 9 : Visualiser les résultats

Enfin, nous pouvons visualiser les résultats de notre modèle de régression linéaire en traçant la droite de régression et les points de données réels. Nous pouvons utiliser la bibliothèque matplotlib pour créer le graphique.

Visualisez les résultats de notre modèle de régression linéaire en traçant la droite de régression et les points de données réels en Python :

python
import matplotlib.pyplot as plt

plt.scatter(X_test['AveRooms'], y_test, color='black')
plt.plot(X_test['AveRooms'], y_pred, color='blue', linewidth=3)
plt.title('Linear Regression')
plt.xlabel('Average Rooms per Dwelling')
plt.ylabel('Median House Value (in $100,000s)')
plt.show()

Conclusion

Dans ce guide, nous avons démontré comment implémenter la régression linéaire en Python avec scikit-learn. Nous avons couvert l'importation des bibliothèques, le chargement et l'exploration d'un jeu de données, la préparation des caractéristiques, la division des données, l'entraînement du modèle, les prédictions, l'évaluation des performances et la visualisation des résultats. Ce pipeline fournit une base solide pour construire et déployer des modèles de régression dans vos propres projets d'apprentissage automatique.

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.