美文网首页我爱编程
最小二乘法least square method

最小二乘法least square method

作者: 爱吃锅包肉的红小豆 | 来源:发表于2018-02-03 15:10 被阅读0次

            最小二乘法:求预测数据与真实数据误差平方和最小化的过程。从几何角度看,就是寻找与已知点(xi,yi)距离平方和最小的拟合曲线h(x)。

    h(w,x)=w0+w1*x+w2*x^2+...+wn*x^n

    即找到一组(w0,w1...wn)使得h(x)-y的平方和最小。即分别对每一个wi求偏导并令其为0,得到n个等式,从而求解出w0,w1...wn。

    leastsq函数用法:

    leastsq(error,初始化参数w,args=(xi,yi)),

    其中error是误差函数,args存放除w以外的其他参数。

          下面列举一个简单的目标函数为y=sin2x拟合函数为多项式函数的最小二乘法代码实现过程:

    import numpy as np

    import matplotlib.pyplot as plt

    from scipy.optimize import leatsq

    #目标函数

    y= np.sin(2*x)

    #拟合函数

    def h(w, x):

    return  np.poly1d(w)

    #残差函数

    error = h(w, x)-y

    #随机选取几个点作为函数输入

    x=np.linspace(0,1,8)

    #随机初始化多项式参数

    w=np.random.randn(10)

    #进行最小二乘法计算

    lsq=leatsq(error, w, (xi,yi) )

    #打印最佳拟合参数

    print    lsq(0) 

    #画出目标曲线和拟合曲线

    plt.plot(x, y, lable ='real curve' )

    plt.plot(x , h(lsq(0), x), lable='predicted curve')

    plt.show()

         

    相关文章

      网友评论

        本文标题:最小二乘法least square method

        本文链接:https://www.haomeiwen.com/subject/kzruzxtx.html