最小二乘拟合(scipy实现)
Scipy库在numpy库基础上增加了众多数学,科学及工程计算中常用库函数。如线性代数,常微分方程数值求解,信号处理,图像处理,稀疏矩阵等。
如下理解通过Scipy进行最小二乘法拟合运算
最小二乘拟合(optimize子函数)
from scipy.optimize import leastsq
optimize函数含有实现最小二乘法的函数 leastsq,
如下通过对正弦函数的拟合,求得最小二乘拟合参数。func三参数A,k,theta分别表示对应振幅,频率,相角。
import numpy as np
from scipy.optimize import leastsq
import pylab as pl
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi'] # 解决中文乱码
mpl.rcParams['axes.unicode_minus'] = False # 解决负号显示为方框的问题 def func(x,p): # 数据拟合所用函数: A*sin(2*pi*k*x + theta) A,k,theta = p
return A*np.sin(2*np.pi*k*x + theta) def residuals(p,y,x): # 实验数据x,y和拟合函数之间的差,p为拟合需要找到的系数 return y - func(x,p) x = np.linspace(0, -2*np.pi, 100) # 创建等差数列,100表示数据点个数
A,k,theta = 10, 0.34 , np.pi/6 # 真实数据的函数参数
y0 = func(x, [A,k,theta]) # 真实数据
y1 = y0 + 2* np.random.randn(len(x)) # 加入噪声后的实验数据 p0 = [7,0.2,0] # 第一次猜测的函数拟合参数 """
1、调用leastsq进行数据拟合
2、residuals为计算误差的函数
3、p0为拟合参数的初始值
4、args为需要拟合的实验数据
"""
plsq = leastsq(residuals,p0,args = (y1,x)) print(u"真实参数:", [A,k,theta])
print(u"拟合参数:", plsq[0]) #实验数据拟合后的参数 # 作图
pl.plot(x, y0, label = u'真实数据')
pl.plot(x, y1, label = u'带噪声的实验数据')
pl.plot(x, func(x,plsq[0]) , label = u"拟合数据")
pl.legend()
pl.show()
图形展示:
以上可以看出由于正弦函数的周期性,拟合参数规律走势和和真实数据实际上是一致的。
最小二乘拟合(scipy实现)的更多相关文章
- python 最小二乘拟合,反卷积,卡方检验
import numpy as np # from enthought.mayavi import mlab ''' ogrid[-1:5:6j,-1:5:6j] [array([[-1. ], [ ...
- 最小二乘拟合(转)good
在物理实验中经常要观测两个有函数关系的物理量.根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题.这类问题通常有两种情况:一种是两个观测量x与y之间的函数形式已知,但一 ...
- OpenCV 最小二乘拟合方法求取直线倾角
工业相机拍摄的图像中,由于摄像质量的限制,图像中的直线经过处理后,会表现出比较严重的锯齿.在这种情况下求取直线的倾角(其实就是直线的斜率),如果是直接选取直线的开始点和结束点来计算,或是用opencv ...
- halcon之最小二乘拟合直线
如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares 通常在halcon中拟合直线会用ho ...
- 非线性函数的最小二乘拟合及在Jupyter notebook中输入公式 [原创]
突然有个想法,能否通过学习一阶RC电路的阶跃响应得到RC电路的结构特征——时间常数τ(即R*C).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多的采样点数来降低信号采集噪声对τ估计值的 ...
- 数值分析实验之曲线最小二乘拟合含有噪声扰动(python实现)
一.实验目的 掌握最小二乘法拟合离散数据,多项式函数形式拟合曲线以及可以其他可以通过变量变换转化为多项式的拟合曲线目前待实现功能: 1. 最小二乘法的基本实现. 2. 用不同数据量,不同参数,不同的多 ...
- 用正交多项式作最小二乘拟合的java实现(转)
import java.util.Scanner; public class Least_square_fit { public static double Least_square_method(i ...
- Scipy教程 - 优化和拟合库scipy.optimize
http://blog.csdn.net/pipisorry/article/details/51106570 最优化函数库Optimization 优化是找到最小值或等式的数值解的问题.scipy. ...
- scipy插值与拟合
原文链接:https://zhuanlan.zhihu.com/p/28149195 1.最小二乘拟合 实例1 import numpy as np import matplotlib.pyplot ...
随机推荐
- return , return true , return false的区别
return true: 返回正确的处理结果. return false : 返回错误的处理结果 和 中断代码继续向下 执行. return: 返回null,起到中断方法执行的效果,只要不r ...
- 虚拟机安装centos6.5出现Error processing drive:pci-0000:00:10-scsi-0:0:0:0问题
vmware安装linux系统出现Error processing drive:pci-0000:00:10-scsi-0:0:0:0问题 问题出现原因:我给虚拟机的内存太小了,只给了512M 解决办 ...
- 在spark udf中读取hdfs上的文件
某些场景下,我们在写UDF实现业务逻辑时候,可能需要去读取某个文件. 我们可以将此文件上传个hdfs某个路径下,然后通过hdfs api读取该文件,但是需要注意: UDF中读取文件部分最好放在静态代码 ...
- JS给对象添加新字段
//这是我的对象 var myInfo = { "name":"peng ya ping", "tel":"138888888&q ...
- 留学Essay写作:从入门到精通
Essay作为最常见的英国大学作业形式,几乎是每个留学生都绕不过去的任务. 大部分人提到自己在英国的大学生活,都会回想起无数个“血泪交加”的夜晚,从白天到傍晚再到深夜,点灯熬油的查资料,写essay. ...
- mysql 深度分页
mysql 分页查询使我们常见的需求 ,但是随着页数的增加查询性能会逐渐下降,尤其是到深度分页的情况.我们可以把分页分为两个步骤,1.定位偏移量,2.获取分页条数的 数据. 所以当数据较大页数较深时 ...
- C# Stream篇(二) -- TextReader 和StreamReader
TextReader 和StreamReader 目录: 为什么要介绍 TextReader? TextReader的常用属性和方法 TextReader 示例 从StreamReader想到多态 简 ...
- 转载:Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...
- HDU 5282:Senior's String
Senior's String Accepts: 30 Submissions: 286 Time Limit: 2000/1000 MS (Java/Others) Memory Limit ...
- 自定义css
/** * 重写FrozenUI */ /** * 按钮 */ body { background-color: #F2F2F2; } @media screen and (-webkit-min-d ...