파이썬에서 지수 및 로그 곡선 피팅 방법
서론
데이터 분석에서 곡선 피팅은 데이터 포인트 세트를 가장 잘 설명하는 함수를 찾는 과정입니다. 지수 및 로그 곡선은 자연 현상을 모델링하는 데 자주 사용되는 두 가지 유형의 곡선입니다. 예를 들어, 인구 성장, 방사성 붕괴 및 화학 반응을 모델링하는 데 사용할 수 있습니다.
이 글에서는 파이썬에서 numpy
및 scipy
라이브러리를 사용하여 지수 및 로그 곡선을 피팅하는 방법을 설명합니다.
사전 준비
먼저 numpy
및 scipy
라이브러리를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.
pip install numpy scipy
지수 곡선 피팅
지수 곡선은 다음과 같은 형식을 따릅니다.
y = a * exp(b * x)
여기서 a
와 b
는 파라미터입니다.
다음 코드는 scipy.optimize.curve_fit
함수를 사용하여 지수 곡선을 피팅하는 방법을 보여줍니다.
import numpy as np
from scipy.optimize import curve_fit
# 데이터 생성
x = np.linspace(0, 10, 100)
y = 2 * np.exp(-0.5 * x)
# 곡선 피팅 함수
def exp_func(x, a, b):
return a * np.exp(b * x)
# 파라미터 추정
popt, pcov = curve_fit(exp_func, x, y)
# 결과 출력
print("a =", popt[0])
print("b =", popt[1])
y = a * np.log(b * x)
import numpy as np
from scipy.optimize import curve_fit
# 데이터 생성
x = np.linspace(1, 100, 100)
y = np.log(x)
# 곡선 피팅 함수
def log_func(x, a, b):
return a * np.log(b * x)
# 파라미터 추정
popt, pcov = curve_fit(log_func, x, y)
# 결과 출력
print("a =", popt[0])
print("b =", popt[1])
참고:
예제 코드
지수 곡선 피팅
import numpy as np
from scipy.optimize import curve_fit
# 데이터 생성
x = np.linspace(0, 10, 100)
y = 2 * np.exp(-0.5 * x)
# 곡선 피팅 함수
def exp_func(x, a, b):
return a * np.exp(b * x)
# 파라미터 추정
popt, pcov = curve_fit(exp_func, x, y)
# 결과 출력
print("a =", popt[0])
print("b =", popt[1])
이 코드는 다음과 같은 결과를 출력합니다.
a = 1.999998181929829
b = -0.49999999999999994
로그 곡선 피팅
import numpy as np
from scipy.optimize import curve_fit
# 데이터 생성
x = np.linspace(1, 100, 100)
y = np.log(x)
# 곡선 피팅 함수
def log_func(x, a, b):
return a * np.log(b * x)
# 파라미터 추정
popt, pcov = curve_fit(log_func, x, y)
# 결과 출력
print("a =", popt[0])
print("b =", popt[1])
a = 0.9999999999999998
b = 1.0000000000000002
설명:
- 첫 번째 코드 블록은
numpy.linspace
함수를 사용하여x
값의 배열을 생성합니다. 그런 다음2 * np.exp(-0.5 * x)
함수를 사용하여y
값의 배열을 생성합니다. 이 함수는 지수 곡선을 나타냅니다. - 두 코드 블록 모두
scipy.optimize.curve_fit
함수를 사용하여 곡선을 피팅합니다. 이 함수는exp_func
또는log_func
함수와x
및y
데이터 배열을 입력으로 사용합니다. curve_fit
함수는popt
및pcov
배열을 반환합니다.popt
배열은 피팅된 파라미터 값을 포함합니다.pcov
배열은 공분산 행렬을 포함합니다.- 마지막으로 두 코드 블록 모두
popt
배열을 출력하여 피팅된 파라미터 값을 표시합니다.
대체 방법
파이썬에서 지수 및 로그 곡선 피팅에는 다양한 방법이 있습니다. 이전 섹션에서는 scipy.optimize.curve_fit
함수를 사용하는 방법을 설명했습니다. 이 섹션에서는 대체 방법으로 lmfit
라이브러리를 사용하는 방법을 설명합니다.
lmfit
라이브러리
lmfit
는 파이썬용 자유 소스 곡선 피팅 라이브러리입니다. 사용하기 쉽고 다양한 기능을 제공합니다.
lmfit
를 설치하려면 다음 명령을 사용하십시오.
pip install lmfit
다음 코드는 lmfit
라이브러리를 사용하여 지수 곡선을 피팅하는 방법을 보여줍니다.
import numpy as np
from lmfit import Model
# 데이터 생성
x = np.linspace(0, 10, 100)
y = 2 * np.exp(-0.5 * x)
# 모델 정의
model = Model(exp)
model.exp.a = 2
model.exp.b = -0.5
# 파라미터 추정
result = model.fit(y, x)
# 결과 출력
print(result.fit_report())
import numpy as np
from lmfit import Model
# 데이터 생성
x = np.linspace(1, 100, 100)
y = np.log(x)
# 모델 정의
model = Model(log)
model.log.a = 1
model.log.b = 1
# 파라미터 추정
result = model.fit(y, x)
# 결과 출력
print(result.fit_report())
lmfit
라이브러리는 파라미터 불확실성, 공분산 행렬 및 잔차와 같은 추가 정보를 제공합니다.
python numpy scipy