[lmfit] 2. lmfitで自作関数によるカーブフィッティング

lmfit

はじめに

lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、lmfitで自作関数によりカーブフィッティングする方法について説明する。

コード

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

解説

モジュールのインポートなど

バージョン

ガウス分布データの生成

np.random.randnでガウス分布に従うデータを作成し、np.histogramでヒストグラム化することでガウス分布を得る。ここでは、histo=histo+0.5で底上げをしている。図で示すと以下のようになる。

モデルの定義

lmfit.modelsExpressionModelで自作関数を定義する。文字列で数式を定義する。式は解析されて、変数と変数でない部分に分けられる。この式の場合、expは変数とならない。

カーブフィット

gmod.fit(histo, x=bins, amp=.5, cen=0, wid=1,b=0.5)により、カーブフィッティングを実行する。yとxを指定して、変数の初期値をそれぞれ入力する。フィッティング結果はprint(result.fit_report())で表示するとができ、以下のようになる。

フィッティング結果の表示

result.init_fitにより初期値によるカーブが表示される。result.best_fitでもっとも良く適合するカーブが表示される。

参考

Non-Linear Least-Squares Minimization and Curve-Fitting for Python — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
Using an ExpressionModel — Non-Linear Least-Squares Minimization and Curve-Fitting for Python

コメント