Cours : Machine Learning
Auteur : Pr. El Alam
L’objectif de ce travail pratique est de comprendre pas à pas comment un modèle de Machine Learning apprend à partir des données.
Dans ce TP :
# NumPy pour les calculs numériques
import numpy as np
# Matplotlib pour les graphiques
import matplotlib.pyplot as plt
Nous créons un jeu de données artificiel afin de simplifier l’apprentissage. Les données suivent une relation presque linéaire, avec des erreurs (bruit).
# Fixer l'aléatoire pour avoir toujours les mêmes résultats
np.random.seed(42)
# Nombre d'observations
n = 200
# Variable d'entrée x (entre 0 et 10)
X = np.random.uniform(0, 10, size=n)
# Paramètres réels (connus uniquement par le professeur)
a_true = 3.0
b_true = 2.0
# Bruit : erreurs réalistes
noise = np.random.normal(0, 2, size=n)
# Variable de sortie y
y = a_true * X + b_true + noise
⚠️ Remarque importante :
Le modèle ne connaît pas les valeurs a_true et b_true.
Il voit uniquement les données X et y.
plt.scatter(X, y)
plt.xlabel("x (entrée)")
plt.ylabel("y (sortie)")
plt.title("Données fictives avec bruit")
plt.show()
Nous utilisons le modèle suivant :
ŷ = a·x + b
Au début :
Le modèle ne sait rien et va apprendre progressivement.
# Initialisation des paramètres du modèle
a = 0.0
b = 0.0
La descente de gradient consiste à :
# Hyperparamètres de la descente de gradient
learning_rate = 0.01 # taille du pas
n_iter = 1000 # nombre d'itérations
for i in range(n_iter):
# Prédiction du modèle
y_pred = a * X + b
# Calcul de l'erreur
error = y - y_pred
# Calcul des gradients
da = -2 * np.mean(X * error)
db = -2 * np.mean(error)
# Mise à jour des paramètres
a = a - learning_rate * da
b = b - learning_rate * db
Après l'apprentissage, le modèle a appris les paramètres a et b.
print("Pente apprise (a) =", round(a, 3))
print("Intercept appris (b) =", round(b, 3))
Pente apprise (a) = 2.986 Intercept appris (b) = 2.202
plt.scatter(X, y, label="Données")
plt.plot(X, a * X + b, color="red", label="Modèle appris")
plt.legend()
plt.show()
Ce TP montre que :
C’est le principe fondamental du Machine Learning.