はじめに
Jupyter WidgetsであるipywidgetsのIntSliderで多項式近似の次数を調整してフィッティングする方法について紹介する。多項式近似にはlmfitのPolynomialModelを使用した。
解説
モジュールのインポートなど
バージョン
データの生成
sin関数データを作成する。
データを表示すると以下のようになる。

3次の多項式で近似
例として、3次の多項式で近似した結果を示す。
lmfitのPolynomialModel(3)を定義し、model.guess()でパラメータを設定したのちに、model.fit()でフィッティングを行う。ax.text()で決定係数を表示した。

Intsliderで次数を変化させてフィット
IntSlider(min=1, max=7,step=1,value=3,description=”degree”)とし、1から7の範囲で1刻みにスライダーを動かせるようにする。description=”degree”でスライダーの左に表示される説明文をdegree(次数)とした。
スライダーを動かすたびに、ax.cla()で図を消し、フィッティングを行って結果を表示している。
得られるパラメータの値はDataFrameにしてdisplay()で表示した。
animationで示すと下のようになる。
参考

[lmfit] 12. 多項式モデルによるカーブフィッティング
lmfitライブラリを使用して多項式モデルによるカーブフィッティングを行う方法を解説します。非線形最小二乗法の応用例として、データ分析や科学計算における多項式近似の実装手順を具体的に紹介します。

[lmfit] 17. フィッティングパラメータをPandas DataFrameに変換する方法
lmfitを使ったフィッティング結果のパラメータをPandas DataFrameに変換する方法を解説。モデルパラメータの整理、可視化、統計分析を効率化し、複数フィッティング結果の比較を容易にする技術を紹介。
Built-in Fitting Models in the models module — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
Widget List — Jupyter Widgets 8.1.7 documentation
コメント