2013-05-09 21 views

回答

4

According to doc,與curve_fit優化讓你

爲參數的優化值,使得誤差平方的F (XDATA,* POPT)的總和 - YDATA最小

然後,使用optimize.leastsq

import scipy.optimize 
p,cov,infodict,mesg,ier = optimize.leastsq(
     residuals,a_guess,args=(x,y),full_output=True,warning=True) 

與此對residuals

def residuals(a,x,y): 
    return y-f(x,a) 

residuals是該方法返回true輸出數據y和模型輸出之間的差異,與f模型,a參數(多個),x的輸入數據。

方法optimize.leastsq將返回大量的信息,你可以自己使用計算RSquared和RMSE。對於RSQuared,你可以做

ssErr = (infodict['fvec']**2).sum() 
ssTot = ((y-y.mean())**2).sum() 
rsquared = 1-(ssErr/ssTot) 

更多細節是什麼infodict['fvec']

In [48]: optimize.leastsq? 
... 
     infodict -- a dictionary of optional outputs with the keys: 
        'fvec' : the function evaluated at the output 
+0

我想跟着你,但沒成功。我是否需要同時使用curve_fit和leastsq?我能不能用我的curve_fit以某種方式使用pcov?根據文檔,curve_fit已經使用leastsq - 或者是我需要計算的r square沒有從leastsq移交到curve_fit的信息? – Woodpicker 2013-05-11 14:13:23

+0

最關鍵的是,如果在最低限度功能中的「a_guess」 - 這是什麼意思?謝謝... – Woodpicker 2013-05-11 14:24:42

+0

行了,它是估計值...現在有效,謝謝 – Woodpicker 2013-05-11 18:52:57