近似式(scipy.optimize.curve_fit)の使い方メモ。
from scipy.optimize import curve_fit
def exponential_func(x, a, b):
return np.exp(a * x + b)
param_initial = np.array((10., 0.2)) # initial guess
param_bounds = ((0.0, -np.inf), (10, np.inf)) # bounds for parameter
sigma = () # 標準偏差など
param, pcov = curve_fit(exponential_func, x, y, p0=param_initial, sigma=sigma, bounds=param_bounds)
オプション
パラメータをある範囲内に指定するときは,オプション bounds を使う。書き方は最小値と最大値それぞれ配列の形で指定する形式なので注意。
例えば、bounds = ((min1, min2, min3), (max1, max2, max3))のように書く。
重み付けフィッティングをするときは,オプション sigma を使う。
例えば,sigma = 標準偏差の配列, というように指定する。
公式ドキュメントは以下。
curve_fit — SciPy v1.14.1 Manual
戻り値
param:残差の2乗和が最小になるように推定したパラメータ。a,bの順番で格納される。
pcov:推定したパラメータの共分散。対角線は推定パラメータ自体の分散。
おまけ
ガチンコでやりたい人はこれを読もう。
コメント