Pythonのscipy.optimize.curve_fit
関数は、データに対して任意の関数をフィットさせるための強力なツールです。この記事では、その基本的な使い方を解説します。
フィッティングしたい関数の定義
まずはフィッティングしたい関数を定義します。例えば、以下のような1次式や2次式、3次式を定義することができます。
def func1(X, a, b):
# 1次式近似
Y = a + b * X
return Y
def func2(X, a, b, c):
# 2次式近似
Y = a + b * X + c * X ** 2
return Y
def func3(X, a, b, c, d):
# 3次式近似
Y = a + b * X + c * X ** 2 + d * X ** 3
return Y
curve_fitの使用
次に、curve_fit
関数を使ってデータに対してこれらの関数をフィットさせます。
from scipy.optimize import curve_fit
# 1次式近似
popt, pcov = curve_fit(func1, x_observed, y_observed)
# 2次式近似
popt, pcov = curve_fit(func2, x_observed, y_observed)
# 3次式近似
popt, pcov = curve_fit(func3, x_observed, y_observed)
ここで、popt
は最適推定値を格納しており、pcov
は共分散を格納しています。
フィッティング結果の可視化
最後に、得られたフィッティング結果を可視化します。
import matplotlib.pyplot as plt
import numpy as np
# フィッティング結果の可視化
plt.figure(figsize=(6, 4))
plt.scatter(x_observed, y_observed, label='observed')
plt.plot(x_observed, func1(x_observed, *popt), label='fit: a=%5.3f, b=%5.3f' % tuple(popt))
plt.legend()
plt.show()
以上がscipy.optimize.curve_fit
の基本的な使い方です。これを使えば、Pythonで簡単にデータに対するカーブフィッティングを行うことができます。.