On récupère donc des données intéressantes : le coefficient de la droite et la valeur à l'origine.Prenons un exemple : j'ai généré des données aléatoires, et tracé un graphique
import numpy as npimport matplotlib.pyplot as pltx = np.array([1,4,8,12,19])y = np.array([0.54,0.87,0.99,1.20,1.89])plt.plot(x,y,'o')plt.show()
L'idée est de réussir à tracer une régression linéaire, et obtenir l'équation de la droite.
Pour obtenir une régression linéaire à partir de données, et obtenir l'équation de la droite, on utilise un nouveau module : scipy.stats. C'est à dire le module "stats" contenu dans la librairie "scipy". Et dans ce module, c'est la fonction "linregress" qui nous interesse.
On peut donc au choix importer la fonction seulement :
Ou alors faire comme précédemment, créer un alias et appeler la fonction en passant par l'alias. Étant donné que c'est l'unique fonction de ce module que nous allons utiliser, cette approche n'apporte pas de gain.
from scipy.stats import linregress
#La fonction sera maintenant dispo, exemple d'appel :
>>>linregress(...)
import scipy.stats as sc
#Exemple d'appel
>>>sc.linregress(...)
#Import des modules
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregress
#Données x et y
x = np.array([1,4,8,12,19])
y = np.array([0.54,0.87,0.99,1.20,1.89])
#On stocke le résultats de fonction regression linéaire dans un fichier reg
reg = linregress(x,y)
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import linregress
#données
x = np.array([1,4,8,12,19])
y = np.array([0.54,0.87,0.99,1.20,1.89])
#regression lineaire
reg = linregress(x,y)
coef = reg[0] #coef de la droite
ordonnee = reg[1] #ordonnée à l'origine
#tracé
X = np.array([min(x),max(x)]) #Pour tracer une droite, 2 points sont suffisants
plt.plot(x,y,'or') #les points de mesure
plt.plot(X,coef*X+ordonnee,'b') #numpy permet de calculer directement les valeurs en ordonnée.
plt.show() #On affiche
plt.plot(x,y,'or',label='données mesurées')
plt.plot(X,coef*X+ordonnee,'b',label='regression linéaire')
plt.title('Données brutes aléatoires et sa regression linéaire')
plt.text(0.5,0.5,"Equation de la regression linéaire : y="+str(round(coef,3))+"x+"+str(round(ordonnee,3)),bbox=dict(facecolor='red', alpha=0.5)) #Affiche le texte en position 0,5;0,5
plt.legend()
plt.grid()
plt.show()