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

解説
モジュールのインポートなど
バージョン
関数の定義
ガウス関数と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
Model - two components — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
コメント