Mis a jour le 2025-04-14, 12:10

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