最小二乘法如何与给定函数一起工作

时间:2017-06-08 13:47:03

标签: python numpy math

我有一些数据,我使用了下面的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;
    ?>

2 个答案:

答案 0 :(得分:1)

什么是p[0], p[1], p[2]

scipy.optimize函数通常返回参数数组p。例如,给出一个线性方程:

enter image description here

p包括线性方程的截距和连续系数(或权重):

enter image description here

因此,在后一个示例中,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

使用转换后的数据求解系数,并将其替换回原始方程式。