我正在使用curve_fit拟合曲线。有没有办法读出决定系数和绝对平方和?谢谢, 啄木鸟
问问题
3208 次
1 回答
5
根据 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
于 2013-05-09T21:35:14.210 回答