Python - R平方和可通过scipy.optimize curve_fit获得的绝对平方和?

时间:2013-05-09 08:08:37

标签: python scipy curve-fitting

我使用curve_fit拟合曲线。有没有办法读出决定系数和平方的绝对和? 谢谢,Woodpicker

1 个答案:

答案 0 :(得分:5)

According to doccurve_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是返回真实输出数据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