Modélisation en Python
Régression linéaire et polynômiale
Pour faire une régression polynômiale en Python, on peut:
utiliser Polyfit(x,y,1) de la bibliothèque Numpy
Le troisième paramètre de Polyfit est le degré du polynôme. Si le degré est 1, il s'agira d'une régression linéaire.
(Le module Matplotlib sert à l'affichage de la courbe.)
En machine learning, on peut utiliser le module linear_model de la bibliothèque d’apprentissage automatique scikit-learn LIEN LIEN2
On peut aussi utiliser le module scipy.stats. Ce dernier dispose de la fonction linregress, qui permet de faire la régression linéaire.LIEN LIEN2
Régression non-polynômiale
Pour une régression non polynômiale (exponentielle, logarithmique....), on peut faire un changement de variable pour rendre la fonction linéaire et utiliser Polyfit. Excel, LibreOffice utilisent cette méthode (mais avec un biais) LIEN
Exemple 1:
>>> x = numpy.array([1, 7, 20, 50, 79])
>>> y = numpy.array([10, 19, 30, 35, 51])
>>> numpy.polyfit(numpy.log(x), y, 1)
array([ 8.46295607, 6.61867463])
# y ≈ 8.46 log(x) + 6.62
Exemple 2:
>>> x = numpy.array([10, 19, 30, 35, 51])
>>> y = numpy.array([1, 7, 20, 50, 79])
>>> numpy.polyfit(x, numpy.log(y), 1)
array([ 0.10502711, -0.40116352])
# y ≈ exp(-0.401) * exp(0.105 * x) = 0.670 * exp(0.105 * x)
# (^ biased towards small values)
>>> numpy.polyfit(x, numpy.log(y), 1, w=numpy.sqrt(y))
array([ 0.06009446, 1.41648096])
# y ≈ exp(1.42) * exp(0.0601 * x) = 4.12 * exp(0.0601 * x)
# (^ not so biased)
On peut aussi utiliser la méthode curve_fit de la bibliothèque scipy.optimize LIEN