2
我想在scipy中使用curve_fit來擬合一些數據的曲線。我搜索我發現這句法,使用scipy在Python中進行曲線擬合
import numpy as np
from scipy.optimize import curve_fit
def func(x, a, b, c):
return a * np.exp(-b * x) + c
xdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
ydata = y + 0.2 * np.random.normal(size=len(xdata))
popt, pcov = curve_fit(func, xdata, ydata)
之後,但文件是不是真的清楚,特別是對於函數func的參數,我知道x是自變量值的numpy的陣列,但什麼是,b和c?此外,這是什麼意思線,
a * np.exp(-b * x) + c
計算Ÿ我們稱之爲與獨立變量和其他參數FUNC,但什麼是YDATA?爲什麼我們計算這種方式,
ydata = y + 0.2 * np.random.normal(size=len(xdata))
最後一件事,如果我通過SciPy的得到一些函數內部的擬合模型(方程),我怎麼能在另外一個使用它?
任何幫助表示讚賞。 謝謝。
感謝@xnx,在YDATA,爲什麼數量乘以0.2? a,b和c的最佳選擇是什麼?因爲我已經嘗試了不同的a,b和c的curve_fit函數,它根本不適合,我的數據是分散的,是否有比曲線擬合更好的解決方案? – Dania
0.2只是重新調整了噪音,所以沒有太多的例子;如果你不能很好地適合你的特定數據到這個'func',或許根本沒有任何'a','b','c'這個模型能很好地完成這項工作。解決方案是使用不同的模型函數'func'! – xnx
謝謝,有沒有使用衆所周知的非線性函數?另外,從你的答案我知道y是模型,ydata只是一些隨機生成的數據,用來顯示擬合曲線y的效果,這是正確的嗎? – Dania