Maison  >  Article  >  développement back-end  >  Comment effectuer un ajustement de courbe exponentielle et logarithmique en Python au-delà de l'ajustement polynomial ?

Comment effectuer un ajustement de courbe exponentielle et logarithmique en Python au-delà de l'ajustement polynomial ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 02:47:29316parcourir

How do you perform exponential and logarithmic curve fitting in Python beyond polynomial fitting?

Ajustement de courbe exponentielle et logarithmique en Python au-delà de l'ajustement polynomial

En plus de l'ajustement polynomial, qui a la fonction polyfit() en Python, il existe des techniques d'ajustement exponentiel et courbes logarithmiques.

Ajustement de courbe logarithmique

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 = journal A B journal x. En ajustant log y contre log x à l'aide de polyfit(), nous obtenons les coefficients log A et B.

<code class="python">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)")</code>

Ajustement de courbe exponentielle

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 par rapport à x à l'aide de polyfit().

<code class="python">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)")</code>

Remarque sur le biais dans l'ajustement non pondéré

Il convient de noter que l'ajustement non pondéré (sans tenir compte des poids de les points de données) peuvent conduire à un biais vers 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.

Utilisation de Scipy pour l'ajustement de courbe

Scipy fournit la fonction curve_fit() pour effectuer un ajustement de courbe non linéaire. Cela nous permet d'adapter n'importe quel modèle directement, sans transformations.

<code class="python">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)")</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn