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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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.