Vous êtes sur la page 1sur 3

SUP'COM

INDP2
2020-2021
Fondements de l'IA
A. BENAZZA & S. BEN JEBARA

Travaux dirigés en apprentissage machine


Regression linéaire et logistique

Exercice 1
Dans cet exercice, une réression linéaire avec une seule variable sera implémentée pour prédire les bénéces
d'une chaîne de restauration.
Supposons que les responsables de la chaîne en question envisagent d'ouvrir une nouveau restaurant dans
une autre ville en se basant sur les informations acquises par l'expérience des autres restaurants dans
d'autres villes. Les informations disponibles sont les bénéces des restaurants et la population de chaque
ville.
On voudrait utiliser ces données pour aider à choisir les nouvelles villes où d'autres restaurants pourraient
être implementés.

1. Le chier 'Restaurant' contient les donnés nécessaires pour créer le modèle de la réression linéaire.
La première colonne est la population de la ville (variable x) et la deuxième colonne est le bénéce
engendré par le restaurant de la ville (variable y ).
Télécharger ces données en utilisant les commandes Python :
import numpy as np
data=np.genfromtxt('Restaurant.txt', delimiter=",")
x=data[:,0].reshape(-1,1)
y=data[:,1].reshape(-1,1)

2. Avant de commencer la résolution du problème, il est utile de comprendre les données en les visual-
isant. Tracer le nuage de points des couples (x, y).
from matplotlib import pyplot as plt
plt.plot(x,y,'bx', markersize=10 )
plt.ylabel('Benece en 10000 DT')
plt.xlabel('Population en ')

3. On initialise l'algorithme de la descente du gradient comme suit :

N=len(data[:,0])
X = np.append(np.ones((N,1)), x, axis=1)
theta = np.zeros((2, 1))
iterations = 1500
alpha = 0.01
4. On applique la fonction qui met en oeuvre l'algorithme de la descente du gradient :
from gradientDescent import gradientDescent
[theta,Cout]=gradientDescent(X, y, theta, alpha, iterations)
5. On trace l'évolution de la fonction coût (nommée Cout) en fonction du nombre d'itérations. On
remarque la convergence de l'algorithme.
6. On obtient le vecteur theta comprenant les 2 paramètres de la régression linéaire, qu'on visualise.
7. On superpose sur la gure précédente la droite de la régression linéaire en rouge. Pour cela, on
applique la fonction yb = θ0 + θ1 x sur tous éléments du vecteur x d'entrée.
8. On peut déterminer maintenant la prédiction de bénéce de n'importe quelle autre ville en se utilisant
le modèle obtenu et le nombre de la population. Testez sur l'exemple de 2 villes ayant 30 000 habitants
et 17 000 habitants.

Exercice 2
Une entreprise de fabrication de microprocesseurs souhaite mettre en oeuvre une régression logistique
régularisée pour prédire si les microprocesseurs réussissent le test d'assurance qualité. Pour celà, deux
tests sont établis an de décider si un microprocesseur sera accepté ou rejeté. Une base de données des
résultats des tests antérieurs sont disponibles an de construire le modèle de régression logistique. Le chier
Processeur.txt contient les 2 variables d'entrée x1 et x2 ainsi que la variable de sortie y de la décision: y = 1
si le microprocesseur est accepté et y = 0 s'il est rejeté.

1. Tracer sur la même gure et en utilisant des couleurs et symboles diérents les nuages des points des
2 variables d'entrée.
2. Expliquer pourquoi une courbe linéaire ne permet pas de séparer les 2 classes. Quelle forme
géométrique vous semble mieux adaptée? La tracer manuellement.
3. Une façon de mieux utiliser les données est de créer plus de fonctionnalités à partir de chaque donnée.
A cet eet, une nouvelle cartographie est crée à partir des 2 descripteurs x1 et x2 . Le nouveau vecteur
des descripteur X , de dimension 28, est issu d'une combinaison polynomiale allant jusqu'à l'ordre 6 :
X = 1 x1 x2 x21 x1 x2 x21 x31 .... x1 x52 x62 .
 

Ce vecteur X est programmé sous Python comme suit:

Appliquer cette transformation à partir des 2 séquences des variables d'entrée X1 et X2 .


4. Une régression logistique entraînée à partir de ce nouveau vecteur de descripteurs peut être appliquée
pour eectuer la classication. Pour cela, il faudra suivre les étapes suivantes.
(a) on détermine le vecteur optimal des paramètres de la régression qui minimise la fonction coût.

(b) On calcule la régression logistique sur les données du problème.


(c) On visualise le résultat de la régression logistique en utilisant la fonction Python fournie
plotDecisionBoundary(theta, X, y)

Vous aimerez peut-être aussi