[lmfit] 11. 2次関数モデルによるカーブフィッティング

lmfit

はじめに

この記事では、lmfitライブラリを使用して2次関数モデルによるカーブフィッティングを行う方法について詳しく解説します。Scipy.optimize.curve_fitの拡張版であるlmfitの特徴や利点を紹介し、非線形最小二乗法を用いたデータ分析の実践的なアプローチを学ぶことができます。

コード

解説

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

バージョン

データの生成

yデータは関数f(x,a,b,c)で定義して作成します。rng = default_rng()を使用し、rng.random(20)でランダムデータを生成してyデータにノイズを加えます。xとyの関係を図示すると以下のようになります。

モデルの定義

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

初期パタメータの推定

model.guess(y, x=x)を使用して、上図のデータを2次関数で近似するためのフィッティングパラメータの初期値を推定します。得られるパラメータ(params)は以下のようになります。

カーブフィット

model.fit(y, params, x=x)を使用して、カーブフィッティングを実行します。

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

print(result.fit_report())により、フィッティングの結果を見ることができます。

result.plot_fit()によりデータとフィッティングカーブが表示されます。

result.plot()とすることで残差とともにフィッティング結果が表示されます。

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

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

参考

Built-in Fitting Models in the models module — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
Random Generator — NumPy v2.3 Manual

コメント