Embora o ajuste de curva polinomial esteja prontamente disponível em Python usando polyfit(), este guia explora métodos para curva exponencial e logarítmica ajuste.
Para ajustar uma linha da forma y = A B log x, simplesmente execute um ajuste polinomial de y em relação ao log x.
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
Para ajustar um linha da forma y = Ae ^ {Bx}, pegue o logaritmo de ambos os lados e execute um ajuste polinomial de log y contra x.
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)")
Para melhor precisão , aproveite pesos proporcionais a y usando a palavra-chave w em polyfit().
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)")
Observe que a maioria aplicativos de planilhas e calculadoras científicas usam uma fórmula não ponderada para regressão exponencial, portanto, evite pesos se desejar compatibilidade.
Se o scipy estiver disponível, use curve_fit para ajustar modelos sem transformações.
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)")
Ao fornecer uma estimativa inicial, curve_fit pode alcançar o mínimo local desejado para ajuste exponencial, resultando em um ajuste mais preciso do que o método polyfit transformado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3