HOWTO · Python

Ajustement de courbes exponentielles et logarithmiques en Python

Ce tutoriel montre comment effectuer un ajustement de courbe exponentiel et logarithmique en Python.

Sur cette page

L’ajustement de courbes est un outil très efficace qui est largement utilisé pour l’analyse. La méthode d’ajustement de courbe étudie la relation entre les variables indépendantes, également appelées prédicteurs, et les variables dépendantes, appelées variables de réponse. Cette méthode vise à fournir le modèle le plus approprié pour s’adapter à une certaine quantité de points de données.

Il existe deux types d’ajustement de courbe :

  • Ajustement de courbe logarithmique
  • Ajustement de courbe exponentielle

Dans ce tutoriel, nous allons vous montrer des méthodes sur la façon de faire l’ajustement de courbe logarithmique et l’ajustement de courbe exponentielle en Python. Les deux utilisent la même astuce : prendre le logarithme d’une variable pour que le modèle devienne une droite, puis ajuster cette droite avec un ajustement polynomial aux moindres carrés.

Bibliothèques et modules utilisés pour l’ajustement de courbes logarithmiques et exponentielles en Python

Discutons des bibliothèques et modules possibles que vous pouvez utiliser pour exécuter des programmes.

la bibliothèque NumPy

Les fonctions que nous utiliserons de la bibliothèque NumPy sont les suivantes.

  • array() - Cette fonction est utilisée pour créer un tableau NumPy qui est un ensemble de valeurs du même type et a une valeur d’index sous forme de tuples.
  • log() - Cette fonction est plutôt une opération mathématique qui aide à calculer le logarithme naturel d’un nombre. Ce nombre fait partie des éléments du tableau d’entrée.
  • exp() - Cette fonction est également une opération mathématique utilisée pour calculer l’exponentielle des éléments présents dans un tableau NumPy d’entrée.
  • polyfit() - Cette fonction aide à ajuster n’importe quelles données dans une fonction polynomiale. Elle effectue un ajustement polynomial aux moindres carrés.

la bibliothèque Matplotlib

La bibliothèque Matplotlib est surtout utilisée pour le traçage en Python. Cette bibliothèque est généralement utilisée pour créer des visualisations en Python. Un module de cette bibliothèque connu sous le nom de module pyplot est utilisé dans ce tutoriel.

Le module pyplot de la bibliothèque Matplotlib est un module open-source qui aide à faire fonctionner la bibliothèque Matplotlib comme MATLAB. Ce module a de nombreuses fonctions qui nous aident à effectuer des opérations comme la création d’une zone de traçage, la création d’étiquettes sur un tracé, et plus encore.

l’ajustement de courbe logarithmique

Un modèle logarithmique a la forme y = a * log(x) + b. Parce que le modèle est linéaire en log(x), vous pouvez l’ajuster en effectuant un ajustement en ligne droite de y par rapport à log(x) — polyfit avec le degré 1 fait exactement cela et renvoie a et b :

import numpy as np

x = np.array([5, 10, 15, 20, 25])
y = np.array([3, 6, 9, 12, 15])

log_x = np.log(x)

coefficients = np.polyfit(log_x, y, 1)
print(coefficients)

Sortie :

[ 7.2647162  -9.64806344]

Le modèle ajusté est donc y = 7,2647 * log(x) - 9,6481. Pour tracer, dessinez les données et la droite ajustée par rapport à log(x) :

import numpy as np
import matplotlib.pyplot as plt

x = np.array([5, 10, 15, 20, 25])
y = np.array([3, 6, 9, 12, 15])

log_x = np.log(x)
slope, intercept = np.polyfit(log_x, y, 1)

fitted = slope * log_x + intercept
plt.plot(log_x, y, "o")
plt.plot(log_x, fitted)
plt.show()

Sortie :

logarithmic curve in python

Dans le programme ci-dessus, nous importons d’abord les bibliothèques nécessaires et créons deux tableaux NumPy comme nos données primaires. Nous prenons le logarithme des valeurs de x uniquement — le modèle est linéaire en log(x), donc y lui-même n’est pas transformé. La fonction polyfit() ajuste ensuite une droite à y par rapport à log(x), et ses deux valeurs renvoyées sont les coefficients de l’équation logarithmique.

Notez que les données d’exemple ci-dessus croissent linéairement en x, alors considérez ceci comme une démonstration de la procédure ; sur des données réelles, vérifiez dans quelle mesure la courbe ajustée correspond réellement avant de vous fier au modèle.

l’ajustement de courbe exponentielle

Un modèle exponentiel a la forme y = c * e^(d * x). Prendre le logarithme naturel des deux côtés donne log(y) = log(c) + d * x, qui est à nouveau une droite — cette fois de log(y) par rapport à x. Ajustez cette droite, et l’ordonnée à l’origine vous donne log(c) :

import numpy as np

a = np.array([6, 12, 18, 24, 30])
b = np.array([4, 8, 12, 16, 20])

log_b = np.log(b)

coefficients = np.polyfit(a, log_b, 1)
print(coefficients)

Sortie :

[0.06520038 1.17018581]

La pente est d = 0,0652 et l’ordonnée à l’origine est log(c) = 1,1702, de sorte que le modèle ajusté est b = e^1,1702 * e^(0,0652 * a). Pour tracer, évaluez ce modèle aux points de données :

import numpy as np
import matplotlib.pyplot as plt

a = np.array([6, 12, 18, 24, 30])
b = np.array([4, 8, 12, 16, 20])

slope, intercept = np.polyfit(a, np.log(b), 1)
fitted = np.exp(intercept) * np.exp(slope * a)

plt.plot(a, b, "o")
plt.plot(a, fitted)
plt.show()

Sortie :

exponential curve in python

La même procédure est suivie que celle que nous avons faite dans l’ajustement de courbe logarithmique, en miroir : là, nous avons transformé l’entrée (log(x)), ici nous transformons la sortie (log(b)) puis nous annulons la transformation avec exp() lors de l’évaluation du modèle ajusté. Comme pour l’exemple logarithmique, les données d’exemple sont linéaires, de sorte que ceci démontre la mécanique de l’ajustement exponentiel plutôt qu’un cas où le modèle exponentiel est le choix naturel.