はじめに
lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、lmfitで自作関数によりカーブフィッティングする方法について説明する。
コード
解説
モジュールのインポートなど
バージョン
ガウス分布データの生成
np.random.randn
でガウス分布に従うデータを作成し、np.histogramでヒストグラム化することでガウス分布を得る。ここでは、histo=histo+0.5
で底上げをしている。図で示すと以下のようになる。
モデルの定義
lmfit.models
の ExpressionModel
で自作関数を定義する。文字列で数式を定義する。式は解析されて、変数と変数でない部分に分けられる。この式の場合、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
コメント