[ipywidgets] 37. IntSliderで多項式近似の次数を調整してフィッティング

ipywidgets

はじめに

この記事では、Jupyter Notebookの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()関数で表示しています。

動作の様子を以下のアニメーションで示します。

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

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

まとめ

本記事では、ipywidgetsのIntSliderを使って多項式近似の次数を動的に調整し、データフィッティングをインタラクティブに行う方法を解説しました。この手法により、適切な多項式の次数を視覚的に判断でき、過学習や適合不足の状態を簡単に確認することができます。Jupyter環境でのデータ分析において、パラメータ調整を効率的に行いたい場合に非常に有用なテクニックです。

参考

[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

コメント