[lmfit] 4. 混合モデルによるカーブフィッティング

lmfit

はじめに

lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、1次関数とガウス関数の混合モデルでカーブフィッティングする方法について説明する。

コード

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

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

解説

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

バージョン

関数の定義

ガウス関数と1次関数を定義する。

傾いたガウス分布データの生成

定義した関数からデータを作成する。np.random.normal()によりデータにばらつきを付与した。

図示すると以下のようになる。

カーブフィット

modelを定義して、mod.make_paramsにより初期パラメータを作成する。
mod.fit(data, pars, x=x)によりフィッティングを行う。

フィッティング後のパラメータの値は以下のようになる。

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

result.best_fitでベストなフィッティング結果をプロットすることができる。また、ベストフィットパラメータはresult.best_values[‘パラメータ名’]で得ることができるので、個々の関数をプロットすることもできる。

参考

Non-Linear Least-Squares Minimization and Curve-Fitting for Python — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
doc_model_two_components.py — Non-Linear Least-Squares Minimization and Curve-Fitting for Python

コメント