En plus de l'ajustement polynomial, qui a la fonction polyfit() en Python, il existe des techniques d'ajustement exponentiel et courbes logarithmiques.
Pour ajuster une courbe au modèle y = A B log x, nous pouvons transformer les données en prenant le logarithme des deux côtés, ce qui donne log y = log A B log x. En ajustant le log y au log x à l'aide de polyfit(), nous obtenons les coefficients log A et B.
import numpy as np
x = np.array([1, 7, 20, 50, 79])
y = np.array([10, 19, 30, 35, 51])
coeffs = np.polyfit(np.log(x), y, 1)
print("Coefficients:", coeffs)
print("y ≈", coeffs[1], " ", coeffs[0], "log(x)")
Pour ajuster une courbe au modèle y = Ae^(Bx), nous pouvons prendre le logarithme des deux côtés, ce qui donne log y = log A B x. Les paramètres peuvent ensuite être déterminés en ajustant le log y à x à l'aide de polyfit().
x = np.array([10, 19, 30, 35, 51])
y = np.array([1, 7, 20, 50, 79])
coeffs = np.polyfit(x, np.log(y), 1)
print("Coefficients:", coeffs)
print("y ≈", np.exp(coeffs[1]), "*", "exp(", coeffs[0], "x)")
Il convient de noter qu'un ajustement non pondéré (sans tenir compte des poids des points de données) peut conduire à un biais en faveur de petites valeurs, en particulier dans l'ajustement de courbe exponentielle. Pour atténuer cela, des poids peuvent être inclus dans le processus d'ajustement, proportionnels aux valeurs y.
Scipy fournit la fonction Curve_fit() pour effectuer un ajustement de courbe non linéaire. Cela nous permet d'ajuster n'importe quel modèle directement, sans transformations.
from scipy.optimize import curve_fit
# Logarithmic curve fitting
popt, pcov = curve_fit(lambda t, a, b: a b * np.log(t), x, y)
print("Coefficients:", popt)
print("y ≈", popt[1], " ", popt[0], "log(x)")
# Exponential curve fitting
popt, pcov = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(1, 0.1))
print("Coefficients:", popt)
print("y ≈", popt[0], "*", "exp(", popt[1], "x)")
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3