我使用curve_fit拟合曲线。有没有办法读出决定系数和平方的绝对和? 谢谢,Woodpicker
答案 0 :(得分:5)
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
是返回真实输出数据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