0% ont trouvé ce document utile (0 vote)
168 vues8 pages

TP1 Regression Lineaire

Transféré par

nada el qaddoury
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
168 vues8 pages

TP1 Regression Lineaire

Transféré par

nada el qaddoury
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Moulay Ismail AU 2024-2025

FS Meknès Département d’Informatique


Parcours d’excellence : SDIA – S6

TP1: Développement d’un programme de


régression linéaire.

Les étapes pour programmer une Régression Linéaire

Etape 1 : Importer les librairies


Commençons par ouvrir un nouveau Notebook. Ensuite, il faut importer
les librairies et fonctions suivantes :
 Numpy pour manipuler notre Dataset en tant que matrice

 [Link] pour visualiser nos données

 La fonction make_regression de Sklearn pour générer

un nuage de point (ici on va simuler des données)

 SGDRegressor (qui signifie Stochastic Gradient Descent


Regressor) et qui contient le calcul de la Fonction Coût,
des gradients, de l’algorithme de minimisation.

import numpy as np
import [Link] as plt
from [Link] import make_regression
from sklearn.linear_model import SGDRegressor

Etape 2 : Créer un Dataset


Pour ce premier code, nous n’allons pas importer de données
personnelles, on va générer un tableau de données (𝒙, 𝒚) aléatoires.

Pour cela, la fonction make_regression est très utile. La fonction prend


comme arguments le nombre d’échantillons à générer, le nombre de
variables et le bruit puis nous retourne deux vecteurs 𝒙 et 𝒚.

Pour maitriser l’aléatoire, on écrit la ligne [Link](0).

Finalement, pour visualiser nos données on utilise la fonction


[Link](x, y).

[Link](0)
x, y = make_regression(n_samples=100, n_features=1, noise=10)
[Link](x, y)

1
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6
Voici le résultat que vous devriez obtenir :

Etape 3 : Développer le modèle et l’entraîner


Pour développer et entraîner un modèle (voir cours): la Fonction Coût,
les dérivées, l’algorithme de Gradient Descent…
Dans Sklearn, tout cela est déjà fait pour vous !
Il vous suffit de définir une variable model depuis le générateur SGDRegressor en
entrant le nombre d’itérations que le Gradient Descent doit effectuer ainsi que le
Learning Rate.

Une fois le modèle défini, il vous faut l’entraîner. Pour cela, il suffit
d’utiliser la fonction fit.

Par exemple, entraînons notre modèle sur 100 itérations avec un


Learning rate de 0.0001 :
model = SGDRegressor(max_iter=100, eta0=0.0001)
[Link](x,y)

Nous pouvons maintenant observez la précision de notre modèle en


utilisant la fonction score qui calcule le coefficient de détermination
entre le modèle et les valeurs 𝒚 de notre Dataset.

On peut aussi utiliser notre modèle pour faire de nouvelles prédictions


avec la fonction predict et tracer ces résultats avec la fonction
[Link] :

print('Coeff R2 =', [Link](x, y))


[Link](x, y) 2
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6
[Link](x, [Link](x), c='red', lw = 3)

3
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6
Ce résultat montre que notre modèle semble vraiment mauvais. C’est
parce que nous nel’avons pas entraîné suffisamment longtemps et
parce que le Learning rate était trop faible.
Solution : il est possible de le ré-entraîner avec de meilleurs hyper-
paramètres.
En Machine Learning, les valeurs qui fonctionnent bien pour la plupart
des entraînements sont :
 Nombre d’itérations = 1000
 Learning rate = 0.001

Résultat : Vous avez entraîné votre premier modèle de Machine


Learning, et il fonctionne vraiment bien avec un coefficient 𝑅2 = 94%. Vous
pourriez maintenant vous en servir pour faire de bonnes prédictions.

4
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6

Pour voir comment votre machine a appris les paramètres du modèle


avec le Gradient Descent, il existe ce qu’on appelle les courbes
d’apprentissage.

Les courbes d’apprentissage


En Machine Learning, on appelle courbe d’apprentissage
(Learning curves) les courbes qui montrent l’évolution de la
Fonction Coût au fil des itérations de Gradient Descent. Si votre
modèle apprend, alors sa Fonction Coût doit diminuer avec le
temps, comme ci-dessous :

A chaque itération, le modèle s’améliore pour donner la droite ci-dessous.

5
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6

Pour visualiser les courbes d’apprentissage sur une régression linéaire .


Utiliser le code suivant dans Jupyter.

6
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6

7
Université Moulay Ismail AU 2024-2025
FS Meknès Département d’Informatique
Parcours d’excellence : SDIA – S6
Deuxième partie :
Utilisation des données réelles importer depuis un fichier csv.
 Etape 1 : Importer les librairies
 Etape 2 : Lire le dataset à partir du fichier .csv

A l’aide de la bibliothèque Pandas on peut importer le contenu de csv dans un data frame.
Le dataset fait la liaison entre le nombre d’année d’expérience et le salaire correspondant.
A titre d’exemple pour un employé ayant une 1.1 année d’expérience il va avoir un salaire de
39343 DH.
 Etape 3 : séparation des entrées « features » des sorties « Target »
Il faut séparer les features des Targets, dans notre cas on ‘a n=1 c’est-à-dire qu’on a un seul
feature (c’est le nombre d’années). La bibliothèque Pandas nous offre un outil très puissant
pour faire cela c’est la fonction « iloc ». X il va prendre toutes les colonnes sauf la dernière
qui va être prise par et y.

 Etape 4 : Répartition de nos données en deux parties, les données


d’entrainement et les données de test
Dans le machine Learning, il excite deux combinaisons possible pour entrainer notre
modèle : soit on divise notre dataset a « train,test » ou bien « train, test, validation » . En ce
moment on va s’intéresser à la première combinaison. A l’aide de la bibliothèque sklearn et
spécialement la fonction train_test_split on va séparer nos données avec des conditions
spécifiques :
Test_size : définit combien d’enregistrement pour les données de test
Random_sate : est simplement le numéro de lot de l'ensemble généré aléatoirement
dans n'importe quelle opération. Nous pouvons spécifier ce numéro de lot chaque fois que
nous voulons à nouveau le même ensemble.

Pour cette deuxième partie du TP, il suffit de faire les mêmes étapes du premier TP en
remplaçant X par X_train et y par y_train.
Apres la formation du model il faut faire des tests sur des données jamais vu, à ce moment
on va travailler avec X_test et y_test.

Vous aimerez peut-être aussi