"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 지수 및 로그 곡선 피팅을 어떻게 수행할 수 있나요?

Python에서 지수 및 로그 곡선 피팅을 어떻게 수행할 수 있나요?

2024-11-08에 게시됨
검색:931

How can I perform exponential and logarithmic curve fitting in Python?

곡선 피팅: Python의 지수 및 로그 접근 방식

다항식 곡선 피팅은 Python에서 polyfit()을 사용하여 쉽게 사용할 수 있지만 이 가이드에서는 지수 및 로그 곡선에 대한 방법을 탐색합니다. 피팅.

로그 피팅

y = A B log x 형식의 선을 맞추려면 로그 x에 대해 y의 다항식 피팅을 수행하면 됩니다.

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

지수 피팅

y = Ae^{Bx} 형식의 라인에서 양쪽의 로그를 취하고 x에 대해 로그 y의 다항식 피팅을 수행합니다.

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)")

더 나은 정확도를 위해 , polyfit()에서 w 키워드를 사용하여 y에 비례하는 가중치를 활용합니다.

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)")

대부분의 경우 스프레드시트 및 공학용 계산기 응용 프로그램은 지수 회귀에 가중치가 적용되지 않은 공식을 사용하므로 호환성이 필요한 경우 가중치를 사용하지 마십시오.

scipy.optimize.curve_fit 사용

scipy를 사용할 수 있는 경우, 없이 모델을 맞추려면 curve_fit을 사용하세요. 변환.

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)")

초기 추측을 제공함으로써 curve_fit은 다음을 달성할 수 있습니다. 지수 피팅에 대해 원하는 로컬 최소값을 제공하므로 변환된 폴리핏 방법보다 더 정확한 피팅이 가능합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3