""" 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}")