REALISE PAR:
Anas Roukhmi
Abdelkarime Rekbi
Hamza Aouni
Yasmine El Boukhari
ENCADRÉ PAR:
Pr. MOHAMED IGUERNANE
Qu'est-ce que la régression linéaire simple ?
En statistique, la régression linéaire simple est un modèle de
régression linéaire avec une seule variable explicative. Dans la
régression linéaire simple, nous prédisons les scores sur une variable
en fonction des résultats sur une autre. La variable critère Y est la
variable que nous prédisons. La variable prédictive X est la variable
avec laquelle nous faisons nos prédictions. L'approche de prédiction
est connue sous le nom de régression simple car il n'y a qu'une seule
variable prédictive.
En conséquence, une fonction linéaire qui prédit les valeurs de la
variable dépendante en fonction de la variable indépendante est
découverte pour des points d'échantillonnage bidimensionnels avec
une variable indépendante et une variable dépendante.
Le graphique ci-dessous explique la relation entre le salaire et les
années d'expérience.
Équation : y = mx + c
Ceci est l'équation de la régression linéaire simple où c est
la constante et m est la pente et décrit la relation entre x (variable
indépendante) et y (variable dépendante). Le coefficient peut être
positif ou négatif et représente le degré de changement dans la
variable dépendante pour chaque unité de changement dans la
variable indépendante.
β0 (ordonnée à l'origine) et β1 (pente) sont les coefficients dont les
valeurs représentent la précision des valeurs prédites par rapport aux
valeurs réelles.
Implémentez la régression linéaire simple en
Python
Dans cet exemple, nous utiliserons les données salariales
concernant l'expérience des employés. Dans ce jeu de données, nous
avons deux colonnesAnnées d'expérience et Salaire
Étape 1 : Importez les packages Python
requis
Nous avons besoin de Pandas pour la manipulation des données,
de NumPy pour les calculs mathématiques, et de MatplotLib et
Seaborn pour les [Link] bibliothèques Sklearn sont
utilisées pour les opérations d'apprentissage automatique.
# Import libraries
import pandas as pd
import numpy as np
import [Link] as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from [Link] import random_state
from sklearn.linear_model import LinearRegression
Étape 2 : Charger le jeu de données
Téléchargez le jeu de données, téléchargez-le dans votre carnet de
notes et lisez-le dans le dataframe pandas.
# Get dataset
df_sal = pd.read_csv('/content/Salary_Data.csv')
df_sal.head()
Étape 3 : Analyse des données
Maintenant que nous avons nos données prêtes, analysons et
comprenons leur tendance en détail. Pour ce faire, nous pouvons
d'abord décrire les données ci-dessous -
# Describe data
df_sal.describe()
Ici, nous pouvons voir que les salaires varient de 37731 à 122391
avec une médiane de 65237.
Nous pouvons également visualiser la distribution des données en
utilisant Seaborn distplot.
# Data distribution
[Link]('Salary Distribution Plot')
[Link](df_sal['Salary'])
[Link]()
Un distplot ou graphique de distribution montre la variation dans la
distribution des données. Il représente les données en combinant une
ligne avec un histogramme.
Ensuite, nous vérifions la relation entre le Salaire et l'Expérience –
# Relationship between Salary and Experience
[Link](df_sal['YearsExperience'], df_sal['Salary'], color = 'lightcoral')
[Link]('Salary vs Experience')
[Link]('Years of Experience')
[Link]('Salary')
[Link](False)
[Link]()
Il est maintenant clairement visible que nos données varient de
manière linéaire. Cela signifie qu'un individu reçoit un salaire plus
élevé à mesure qu'il acquiert de l'expérience.
Étape 4 : Diviser le jeu de données en
variables dépendantes/indépendantes
L'expérience (X) est la variable indépendante. Le salaire (y) dépend
de l'expérience.
# Splitting variables
X = df_sal.iloc[:, :1] # independent
y = df_sal.iloc[:, 1:] # dependent
Étape 4 : Diviser les données en ensembles
d'entraînement/test
De plus, divisez vos données en ensembles d'entraînement (80%)
et de test (20%) en utilisant train_test_split.
# Splitting dataset into test/train
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2,
random_state = 0)
Étape 5 : Entraîner le modèle de régression
Passez les données X_train et y_train dans le modèle de
régression par [Link] pour entraîner le modèle avec nos
données d'entraînement.
# Regressor model
regressor = LinearRegression()
[Link](X_train, y_train)
Étape 6 : Prédire le résultat
Voici la partie intéressante, lorsque nous sommes tous prêts à
prédire n'importe quelle valeur de y (salaire) en fonction de X
(expérience) avec le modèle formé à l'aide de [Link]
# Prediction result
y_pred_test = [Link](X_test) # predicted value of y_test
y_pred_train = [Link](X_train) # predicted value of y_train
Étape 7 : Tracer les résultats d'entraînement
et de test
Il est temps de tester nos résultats prédits en traçant des
graphiques.
Tracer les données de l'ensemble d'entraînement par
rapport aux prédictions Tout d'abord, nous traçons le résultat
des ensembles d'entraînement (X_train, y_train) avec X_train et
la valeur prédite de y_train ([Link](X_train)).
[Link](X_train, y_train, color = 'lightcoral')
[Link](X_train, y_pred_train, color = 'firebrick')
[Link]('Salary vs Experience (Training Set)')
[Link]('Years of Experience')
[Link]('Salary')
[Link](['X_train/Pred(y_test)', 'X_train/y_train'], title = 'Sal/Exp', loc='best',
facecolor='white')
[Link](False)
[Link]()
Tracer les données du jeu de test par rapport aux
prédictions Deuxièmement, nous traçons le résultat des
ensembles de test (X_test, y_test) avec X_train et la valeur
prédite de y_train ([Link](X_train)).
# Prediction on test set
[Link](X_test, y_test, color = 'lightcoral')
[Link](X_train, y_pred_train, color = 'firebrick')
[Link]('Salary vs Experience (Test Set)')
[Link]('Years of Experience')
[Link]('Salary')
[Link](['X_train/Pred(y_test)', 'X_train/y_train'], title = 'Sal/Exp', loc='best',
facecolor='white')
[Link](False)
[Link]()
Nous pouvons voir, dans les deux graphiques, que la ligne de
régression couvre les données d'entraînement et de test.
De plus, vous pouvez tracer les résultats avec la valeur prédite de
y_test ([Link](X_test)), mais la ligne de régression resterait
la même car elle est générée à partir de l'unique équation de
régression linéaire avec les mêmes données d'entraînement.
Si vous vous souvenez du début de cet article, nous avons discuté
de l'équation linéaire y = mx + c, nous pouvons également obtenir
le c (ordonnée à l'origine) et m (pente/coefficient) à partir du modèle
de régression.
# Regressor coefficients and intercept
print(f'Coefficient: {regressor.coef_}')
print(f'Intercept: {regressor.intercept_}')