mes-scripts-de-ml/fondamentaux/01-regression_lineaire.py

45 lines
1.3 KiB
Python

import numpy as np
import matplotlib.pyplot as plt
###############################################################################
# 01-regression_lineaire.py
# @title: Apprentissage par régression linéaire
# @project: Mes scripts de ML
# @lang: fr
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
# @copyright: Copyright (C) 2023 Philippe Roy
# @license: GNU GPL
###############################################################################
###
# Commandes NumPy :
# - np.array : créer un tableau à partir d'une liste de listes
# - np.c_ : concatène les colonnes des tableaux
# - np.ones : créer un tableau de 1
# - np.linalg.inv : inversion de matrice
# - .T : transposé de matrice
# - .dot : produit de matrice
###
# Observations d'apprentisage
x = 2*np.random.rand(100, 1) # Liste des observations x1
y = 4 + 3*x + np.random.rand(100, 1) # Liste des cibles y
X = np.c_[np.ones((100, 1)), x] # Matrice des observations, avec x0=1
# Phase d'apprentissage par régression linéaire avec l'équation normale
theta_best= np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
# Nouvelles observations
x_new=np.array([[0], [2]])
X_new = np.c_[np.ones((2, 1)), x_new] # Matrice des observations, avec x0=1
# Phase d'inférence
y_predict=X_new.dot(theta_best)
# Plot
plt.plot(x, y, 'b.')
plt.plot(x_new, y_predict, 'r-')
plt.show()