**自力更生之路**

自力更生之路

#python 最小二乘法

最小二乘法目标:残差平方和最小,从而达到最优的回归模型。

使用scipy提供的最小二乘法函数

python的科学计算包scipy的里面提供了一个函数,可以求出任意的想要拟合的函数的参数。那就是scipy.optimize包里面的leastsq函数。 函数原型是:
leastsq(func, x0, args=(), Dfun=None, full_output=0, col_deriv=0, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=0.0, factor=100, diag=None, warning=True)
一般指定前三个参数就可以了。

func 是我们自己定义的一个计算误差的函数,

x0 是计算的初始参数值

args 是指定func的其他参数

例子:使用最小二乘进行直线拟合

import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as plt

Xi=np.array([8.19,3.24,9.24,5.90])
Yi=np.array([3.12,2.34,1.34,2.80])

'''定义要拟合的函数和误差形式'''
def func(p,x):
    k,b=p
    return k*x+b
def error(p,x,y,s):
    print(s)
    return func(p,x)-y
    
'''初始值'''
s="computing..."
p0=[100,2]

'''估计参数'''
Para=leastsq(error,p0,args=(Xi,Yi,s))
k,b=Para[0]
print("k= ",k,'\n',"b= ",b)

'''图形显示'''
plt.figure(figsize=(8,6))
plt.scatter(Xi,Yi,color="red",label="SP",linewidth=3)
x=np.linspace(0,10,1000)
y=k*x+b
plt.plot(x,y,color="orange",label="fitting")
plt.legend()
plt.show()

参考链接: [link]http://ju.outofmemory.cn/entry/20116

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值