我有一些数据,我用下面的numpy函数来拟合。这件衣服很合身,但我需要解释一下它的工作原理。p[1],p[2],p[0]代表什么为了它如果我能得到它的数学表达式就好了。最小二乘法到底在做什么?你知道吗
fitfuncvx = lambda p, x: p[2]+p[0]*np.exp(-x/p[1])
errfuncvx = lambda p, x, y: y - fitfuncvx(p, x)
sig_fit=np.where(Sig<12)
pinit = [1, 100,0.1]
pfinal, success = optimize.leastsq(errfuncvx, pinit[:], args=(Sig[sig_fit], vx[sig_fit]))
什么是
p[0], p[1], p[2]
?scipy.optimize
函数通常返回一个参数数组p
。例如,给定一个线性方程:p
包括线性方程的截距和连续系数(或权重):因此,在后一示例中,
p[0]
和p[1]
分别属于线的截距和斜率。当然,对于高阶多项式,也可以优化更多的参数(...
)。OP使用指数函数,其中参数可重写如下:我们看到
p
中的参数被显式地解压成单独的权重b0, b1, b2
,它们分别与p[0], p[1], p[2]
直接对应。你知道吗细节:优化器是如何工作的?
^{} 函数的第一个返回值是一个优化的拟合参数数组,从初始猜测开始,通过迭代最小化残差来计算。残差是预测响应(或
y
-hat值)和真实响应(y
)之间的距离。第二个返回值是协方差矩阵,从中可以estimate the error in the calculation。你知道吗作为参考,我包括
leastsq
签名的前三个参数:func
是您希望优化的目标函数x0
是最初猜测的参数args
是目标函数所需的附加变量(如果有)值
p[0], p[1], and p[2]
是在最小二乘拟合中求解的系数。你知道吗最小二乘拟合是计算系数的值,使因变量数据值和拟合函数预测值之间的误差平方和最小化。你知道吗
它可能是使用共轭梯度迭代法来计算给定起始猜测的系数。你知道吗
我认为你不应该有一个
p[2]
。你知道吗你的健身功能应该是:
如果我取两边的自然对数:
如果你做这个变换,你就是在一个新函数上做一个简单的线性回归。你知道吗
那是个容易的问题。对于一个自变量的情况,系数有formulas。你知道吗
使用变换后的数据求解系数,并替换回原始方程。你知道吗
相关问题 更多 >
编程相关推荐