Warning: Undefined variable $highlight in
/home/jeanmichel.richer/public_html/rendu_code.php on line
43
"""
A partir d'un nuage de points donné par deux vecteurs de valeurs x et y,
on cherche à trouver la droite de régression qui passe au plus près de ces points.
La droite de régression est donnée par l'équation y = ax + b où a est le coefficient de la pente
et b est l'ordonnée à l'origine.
"""
import numpy as np
import matplotlib.pyplot as plt
# nombre de valeurs
max=200
# créer un tableau x de 200 valeurs comprises entre 1 et 5
x = np.linspace(1, 5, max)
print(x) # affichage facultatif
# Créer un tableau de 200 valeurs comprises entre -1 et 1
tableau = np.random.uniform(-1, 1, size=max)
# calculer y = 3x + 2 + tableau
y = 3*x + 2 + tableau
print(y) # affichage facultatif
def regression_lineaire(x, y):
"""
Calculer la droite de régression qui passe au plus près des points
x et y
"""
x_mean = np.mean(x)
y_mean = np.mean(y)
a = np.sum((x - x_mean) * (y - y_mean)) / np.sum((x - x_mean) ** 2)
b = y_mean - a * x_mean
return a, b
a, b = regression_lineaire(x, y)
print(f"Coefficient de la pente a: {a}")
print(f"Ordonnée à l'origine b: {b}")
# Tracer la ligne de régression
plt.scatter(x, y)
plt.plot(x, a*x + b, color='red')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Scatter plot of x and y')
plt.show()
# on aurait pu utiliser la fonction polyfit de numpy
#a, b = np.polyfit(x, y, 1)
#print(f"a = {a}, b = {b}")