[lmfit] 1. lmfitによる非線形最小2乗ガウシアンフィッティング

lmfit

はじめに

この記事では、Python用の非線形最小二乗法ライブラリ「lmfit」を使ったガウシアンフィッティングの方法について解説します。lmfitはScipy.optimize.curve_fitの拡張版として、より柔軟なパラメータ管理や制約設定が可能なツールです。実践的なコード例と共に、データ解析における活用法を紹介します。

コード

解説

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

バージョン

ガウス分布データの生成

np.random.randnを使用してガウス分布に従うデータを生成し、np.histogramでヒストグラム化することでガウス分布を可視化します。以下の図にその結果を示します。

モデルの定義

lmfit.modelsGaussianModelをモデル関数として用います。

初期パタメータの推定

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

コメント