我有一些数据,我使用了下面的numpy函数来进行拟合。拟合很好,但我需要解释它是如何工作的。 p [1],p [2],p [0]代表什么。如果我得到数学表达式,那将会很好。实际上最不正方形在做什么?
<?php
$block = block_load('dkan_sitewide', 'dkan_sitewide_search_bar');
if($block):
$search = _block_get_renderable_array(_block_render_blocks(array($block)));
print render($search);
endif;
?>
答案 0 :(得分:1)
什么是p[0], p[1], p[2]
?
scipy.optimize
函数通常返回参数数组p
。例如,给出一个线性方程:
p
包括线性方程的截距和连续系数(或权重):
因此,在后一个示例中,p[0]
和p[1]
分别属于一行的拦截和斜率。当然,对于更高阶的多项式,也可以优化更多参数(...
)。 OP使用指数函数,其中参数可以按如下方式重写:
def fitfuncvx(p, x):
b0, b1, b2 = p
return b2 + b0*np.exp(-x/b1)
我们看到p
中的参数被明确解压缩为单独的权重b0, b1, b2
,它们分别与p[0], p[1], p[2]
直接对应。
详情:优化工作如何运作?
scipy.optimize.leastsq
函数的第一个返回值是一个优化的拟合参数数组,从您的初始猜测开始,通过迭代最小化残差来计算。残差是预测响应(或y
- 帽子值)与真实响应(y
)之间的距离。第二个返回值是协方差矩阵,从中可以estimate the error in the calculation。
作为参考,我包括leastsq
签名的前三个参数:
scipy.optimize.leastsq(func, x0, args=(), ...)
func
是您希望优化的目标函数x0
是初始猜测参数args
是目标函数(如果有)答案 1 :(得分:0)
值p[0], p[1], and p[2]
是在最小二乘拟合中求解的系数。
最小二乘拟合是计算系数的值,这些系数最小化因变量数据值与拟合函数预测的误差平方和之和。
它可能使用共轭梯度迭代方法来计算给定起始猜测的系数。
我认为你不应该有p[2]
。
你的健身功能应该是:
y = c0*exp(-c1*x)
如果我采用双方的自然对数:
ln(y) = ln(c0) - c1*x = z
如果进行转换,则会对新函数z = z(x)
进行简单的线性回归。
这是一个简单的问题。对于一个自变量的情况,系数有formulas。
使用转换后的数据求解系数,并将其替换回原始方程式。