はじめに
lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、lmfitでガウシアンフィッティングする方法について説明する。
コード
解説
モジュールのインポートなど
バージョン
ガウス分布データの生成
np.random.randn
でガウス分布に従うデータを作成し、np.histogramでヒストグラム化することでガウス分布を得る。図で示すと以下のようになる。
モデルの定義
lmfit.models
の GaussianModel
をモデル関数として用いる。
初期パタメータの推定
model.guess(histo, x=bins[1:])
により上図のガウス分布のフィッティングパラメータの初期値を推定する。initial valueが推定した初期値となる。
カーブフィット
model.fit(histo, params, x=bins[1:])
により、カーブフィッティングを実行する。
フィッティング結果の表示
result.plot_fit()
によりデータとフィッティングカーブが表示される。初期パラメータの結果を表示するには、ax.plot(bins[1:], result.init_fit)
とする。
print(result.fit_report())
により、フィッティングの結果を見ることができる。
result.plot()
とすることで残差とともにフィッティング結果が表示される。
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
参考
Non-Linear Least-Squares Minimization and Curve-Fitting for Python — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
Fit with Data in a pandas DataFrame — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
コメント