다항식 곡선 피팅은 Python에서 polyfit()을 사용하여 쉽게 사용할 수 있지만 이 가이드에서는 지수 및 로그 곡선에 대한 방법을 탐색합니다. 피팅.
y = A B log x 형식의 선을 피팅하려면 로그 x에 대해 y의 다항식 피팅을 수행하면 됩니다.
<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>
y = Ae^{Bx} 형식의 선을 피팅하려면 양변에 로그를 취하고 x에 대해 로그 y의 다항식 피팅을 수행합니다.
<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>
더 나은 방법 정확성, 폴리핏()의 w 키워드를 사용하여 y에 비례하는 가중치를 활용합니다.
<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>
대부분의 스프레드시트 및 공학용 계산기 애플리케이션은 지수 회귀에 비가중 공식을 사용하므로 호환성이 필요한 경우 가중치를 사용하지 마세요.
scipy를 사용할 수 있는 경우 변환 없이 모델을 맞추려면 curve_fit을 사용하세요.
<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>
초기 추측을 제공함으로써 curve_fit은 원하는 값에 도달할 수 있습니다. 지수 피팅을 위한 국소 최소값을 사용하므로 변환된 폴리핏 방법보다 더 정확한 피팅이 가능합니다.
위 내용은 Python에서 지수 및 로그 곡선 피팅을 어떻게 수행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!