Scipy库在numpy库基础上增加了众多数学,科学及工程计算中常用库函数。如线性代数,常微分方程数值求解,信号处理,图像处理,稀疏矩阵等。

如下理解通过Scipy进行最小二乘法拟合运算

最小二乘拟合(optimize子函数)

from scipy.optimize import leastsq

optimize函数含有实现最小二乘法的函数 leastsq,

如下通过对正弦函数的拟合,求得最小二乘拟合参数。func三参数A,k,theta分别表示对应振幅,频率,相角。

  1. import numpy as np
  2. from scipy.optimize import leastsq
  3. import pylab as pl
  4. from pylab import mpl
  5. mpl.rcParams['font.sans-serif'] = ['KaiTi'] # 解决中文乱码
  6. mpl.rcParams['axes.unicode_minus'] = False # 解决负号显示为方框的问题
  7.  
  8. def func(x,p):
  9.  
  10. # 数据拟合所用函数: A*sin(2*pi*k*x + theta)
  11.  
  12. A,k,theta = p
  13. return A*np.sin(2*np.pi*k*x + theta)
  14.  
  15. def residuals(p,y,x):
  16.  
  17. # 实验数据x,y和拟合函数之间的差,p为拟合需要找到的系数
  18.  
  19. return y - func(x,p)
  20.  
  21. x = np.linspace(0, -2*np.pi, 100) # 创建等差数列,100表示数据点个数
  22. A,k,theta = 10, 0.34 , np.pi/6 # 真实数据的函数参数
  23. y0 = func(x, [A,k,theta]) # 真实数据
  24. y1 = y0 + 2* np.random.randn(len(x)) # 加入噪声后的实验数据
  25.  
  26. p0 = [7,0.2,0] # 第一次猜测的函数拟合参数
  27.  
  28. """
  29. 1、调用leastsq进行数据拟合
  30. 2、residuals为计算误差的函数
  31. 3、p0为拟合参数的初始值
  32. 4、args为需要拟合的实验数据
  33. """
  34. plsq = leastsq(residuals,p0,args = (y1,x))
  35.  
  36. print(u"真实参数:", [A,k,theta])
  37. print(u"拟合参数:", plsq[0]) #实验数据拟合后的参数
  38.  
  39. # 作图
  40. pl.plot(x, y0, label = u'真实数据')
  41. pl.plot(x, y1, label = u'带噪声的实验数据')
  42. pl.plot(x, func(x,plsq[0]) , label = u"拟合数据")
  43. pl.legend()
  44. pl.show()  

图形展示:

以上可以看出由于正弦函数的周期性,拟合参数规律走势和和真实数据实际上是一致的。

最小二乘拟合(scipy实现)的更多相关文章

  1. python 最小二乘拟合,反卷积,卡方检验

    import numpy as np # from enthought.mayavi import mlab ''' ogrid[-1:5:6j,-1:5:6j] [array([[-1. ], [ ...

  2. 最小二乘拟合(转)good

    在物理实验中经常要观测两个有函数关系的物理量.根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题.这类问题通常有两种情况:一种是两个观测量x与y之间的函数形式已知,但一 ...

  3. OpenCV 最小二乘拟合方法求取直线倾角

    工业相机拍摄的图像中,由于摄像质量的限制,图像中的直线经过处理后,会表现出比较严重的锯齿.在这种情况下求取直线的倾角(其实就是直线的斜率),如果是直接选取直线的开始点和结束点来计算,或是用opencv ...

  4. halcon之最小二乘拟合直线

    如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares 通常在halcon中拟合直线会用ho ...

  5. 非线性函数的最小二乘拟合及在Jupyter notebook中输入公式 [原创]

    突然有个想法,能否通过学习一阶RC电路的阶跃响应得到RC电路的结构特征——时间常数τ(即R*C).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多的采样点数来降低信号采集噪声对τ估计值的 ...

  6. 数值分析实验之曲线最小二乘拟合含有噪声扰动(python实现)

    一.实验目的 掌握最小二乘法拟合离散数据,多项式函数形式拟合曲线以及可以其他可以通过变量变换转化为多项式的拟合曲线目前待实现功能: 1. 最小二乘法的基本实现. 2. 用不同数据量,不同参数,不同的多 ...

  7. 用正交多项式作最小二乘拟合的java实现(转)

    import java.util.Scanner; public class Least_square_fit { public static double Least_square_method(i ...

  8. Scipy教程 - 优化和拟合库scipy.optimize

    http://blog.csdn.net/pipisorry/article/details/51106570 最优化函数库Optimization 优化是找到最小值或等式的数值解的问题.scipy. ...

  9. scipy插值与拟合

    原文链接:https://zhuanlan.zhihu.com/p/28149195 1.最小二乘拟合 实例1 import numpy as np import matplotlib.pyplot ...

随机推荐

  1. Postman配置Pre-request scripts预请求对请求进行AES加密

    1.首先,Postman的Pre-request scripts页面右边已经提供了一些模板,这些模板可以设置变量与环境变量,并使用双大括号对变量进行引用 {{info}} 2.对所有POST请求都进行 ...

  2. 九十八、SAP中ALV事件之十一,查看图片

    一.输入事务代码OAER 二.可以看到相关的图片文件了

  3. Web安全常见问题及解决方法

    关于Web安全,我们最早听到最多的就是SQL注入.例如用户在系统登录界面输入用户名和密码,提交以后,后端直接拿到数据就拼接SQL语句去查询数据库.如果在输入时进行了恶意的SQL拼装,那么最后生成的SQ ...

  4. 14 —— npm —— 基本使用 ——初始化项目

    概念:类似积木,可以组装成各种应用 node 的强大之处 : 可以随意使用这些组件 一,npm 是什么: nodejs 自带的包(模块)管理工具 二,查看 npm 的所有选项 三,查看各个选项的具体作 ...

  5. h5-伸缩布局-小案例

    1.伸缩布局案例1-基本页面布局 1.1.html <div class="layout"> <header></header> <mai ...

  6. HttpServlet中文乱码问题

    客户端提交数据给服务器端(Requset) 如果数据中带有中文的话,有可能会出现乱码情况,那么可以参照以下方法解决. 如果是GET方式 1.代码转码 String username = request ...

  7. 在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4

    上次在网上找了一个在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4的文档,可能是这个文档不是最新版的,安装的时候遇到了很多问题, 最后跟一个大神要了一 ...

  8. 吴裕雄--天生自然 JAVASCRIPT开发学习

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 关于Vue element-ui中诡异问题的解决思路

    最近在做Element-ui项目时总是会出现些异步及其一些诡异问题,关于vue 的异步原理就不多说了,感觉大部分的问题都可以用Vue.nextTick来解决,Vue.nextTick是等DOM二次加载 ...

  10. JS向固定数组中添加不重复元素并冒泡排序

    向数组{7,20,12,6,25}中添加一个不重复的数字,然后按照从小到大的顺序排列 源代码: <!DOCTYPE html> <html> <head> < ...