Maison >développement back-end >Tutoriel Python >Comment puis-je effectuer un ajustement de courbe exponentielle et logarithmique en Python ?
Bien que l'ajustement de courbe polynomiale soit facilement disponible en Python à l'aide de polyfit(), ce guide explore les méthodes pour les courbes exponentielles et logarithmiques. ajustement.
Pour ajuster une ligne de la forme y = A B log x, effectuez simplement un ajustement polynomial de y par rapport au log x.
<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("y ≈", coeffs[1], "log(x) +", coeffs[0]) # y ≈ 8.46 log(x) + 6.62</code>
Pour ajuster une ligne de la forme y = Ae^{Bx}, prenez le logarithme des deux côtés et effectuez un ajustement polynomial du log y par rapport à x.
<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("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 0.670 * exp(0.105 * x)")</code>
Pour mieux précision, exploitez des poids proportionnels à y à l'aide du mot-clé w dans polyfit().
<code class="python">coeffs = np.polyfit(x, np.log(y), 1, w=np.sqrt(y)) print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 4.12 * exp(0.0601 * x)")</code>
Notez que la plupart des applications de feuilles de calcul et de calculatrice scientifique utilisent une formule non pondérée pour la régression exponentielle, évitez donc les poids si la compatibilité est souhaitée.
Si scipy est disponible, utilisez Curve_fit pour ajuster les modèles sans transformations.
<code class="python">from scipy.optimize import curve_fit # Logarithmic fitting coeffs, _ = curve_fit(lambda t, a, b: a + b * np.log(t), x, y) print("y ≈", coeffs[1], "log(x) +", coeffs[0]) # y ≈ 6.62 + 8.46 log(x) # Exponential fitting with initial guess coeffs, _ = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(4, 0.1)) print("y ≈", coeffs[0], "exp(", coeffs[1], " * x) = 4.88 exp(0.0553 x)")</code>
En fournissant une estimation initiale, Curve_fit peut atteindre le résultat souhaité minimum local pour l'ajustement exponentiel, ce qui entraîne un ajustement plus précis que la méthode polyfit transformée.
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!