> Modules non standards > SciPy > Fitting / Regression linéaire
Fitting / Regression linéaire
Régression polynomiale (et donc aussi régression linéaire) :
- fit = numpy.polyfit([3, 4, 6, 8], [6.5, 4.2, 11.8, 15.7], 1) : fait une régression polynomiale de degré 1 et renvoie les coefficients, d'abord celui de poids le plus élevé. Donc ici [a, b] si y = ax + b. Renvoie ici array([2.17966102, -1.89322034]).
- on peut alors après construire la fonction polynôme correspondante : poly = numpy.poly1d(fit) (renvoie une fonction), et évaluer cette fonction sur une valeur de x : poly(7.0) donne 13.364406779661021.
- cette fonction peut être évaluée directement sur une liste : poly([2, 3, 4, 5]) donne array([2.46610169, 4.64576271, 6.82542373, 9.00508475]).
Regression linéaire :
- on peut aussi faire lr = scipy.stats.linregress([3, 4, 6, 8], [6.5, 4.2, 11.8, 15.7]).
- renvoie un tuple avec 5 valeurs (ici, (2.1796610169491526, -1.8932203389830509,0.93122025491258043, 0.068779745087419575, 0.60320888545710094)) :
- la pente.
- l'ordonnée à l'origine.
- le coefficient de corrélation, positif ou négatif (pour avoir le coefficient de détermination R2, prendre le carré de cette valeur).
- la p-value.
- l'erreur standard de l'estimation du gradient.
numpy.linalg.lstsq : permet de résoudre l'équation ax = b avec a et b des matrices m x n et m x 1 respectivement par la méthode des moindres carrés où le système d'équation peut être sur-déterminé, sous-déterminé ou exactement déterminé :
- Exemple :
a = numpy.array([[1, 2], [4, 5], [2, 7], [5, 7]])
b = numpy.array([[5], [14], [17], [20]])
x, residues, rank, s = numpy.linalg.lstsq(a, b)
- le tuple renvoyé consiste en :
- x : la solution, de dimension n x 1
- residues : la somme des carrés des résidus.
- rank : le rang de la matrice.
- s : les valeurs singulières de la matrice.
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert