2

以下は、線形方程式に基づいて Scipy の Curve_Fit を使用する例です。一般的なカーブ フィットについての私の理解では、ランダム ポイントのプロットを取得し、一連のデータ ポイントに「最適なフィット」を示す曲線を作成します。私の質問は、それが返すscipy curve_fitを使用しています:

「f(xdata, *popt) - ydata の 2 乗誤差の合計が最小になるようなパラメーターの最適値」。

この 2 つの値は、簡単な英語で正確に何を意味するのでしょうか? ありがとう!

import numpy as np
from scipy.optimize import curve_fit
# Creating a function to model and create data
def func(x, a, b):
    return a * x + b
# Generating clean data
x = np.linspace(0, 10, 100)
y = func(x, 1, 2)
# Adding noise to the data
yn = y + 0.9 * np.random.normal(size=len(x))
# Executing curve_fit on noisy data
popt, pcov = curve_fit(func, x, yn)
# popt returns the best fit values for parameters of
# the given model (func).
print(popt)
4

1 に答える 1

4

SciPy に、点 (x, y) のペアのセットを通る「最適な」線を教えてもらいます。

直線の方程式は次のとおりです。

y = a*x + b

直線の傾きはa; y 切片はbです。

aとの 2 つのパラメーターがbあるため、2 つの未知数を解くには 2 つの方程式しか必要ありません。2 点で線が定義されますよね?

では、ポイントが 2 つ以上ある場合はどうなるでしょうか。すべてのポイントを通過することはできません。勾配と切片をどのように選択して、「最適な」ラインを作成しますか?

「最良」を定義する 1 つの方法は、各 y 値と直線上のその x で予測された y との差の 2 乗を最小化する傾きと切片を計算することです。

error = sum[(y(i) - (a*x(i) + b))^2]

微積分を知っていれば、これは簡単な演習です。誤差 wrt の一次導関数を取り、aそれらbをゼロに等しく設定します。a2 つの未知数を含む 2 つの方程式が得られますb。それらを解いて、「最良の」ラインの係数を取得します。

于 2013-10-24T20:50:24.100 に答える