最小二乘拟合(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 ...
随机推荐
- HDU - 6198 number number number(规律+矩阵快速幂)
题意:已知F0 = 0,F1 = 1,Fn = Fn - 1 + Fn - 2(n >= 2), 且若n=Fa1+Fa2+...+Fak where 0≤a1≤a2≤⋯≤a,n为正数,则n为mj ...
- golang 读取 chrome保存的网站账号信息
package main import ( "database/sql" "fmt" "log" "os" " ...
- 019-PHP创建目录函数
<?php if (mkdir("myDir1", 0777)) //创建目录的函数 { print("目录创建成功"); //目录建立成功 } else ...
- 151-PHP nl2br函数(二)
<?php $str="h\nt\nm\nl"; //定义一个多处换行的字串 echo "未处理前的输出形式:<br />{$str}"; $ ...
- Swift Json解析基础
func JSONToData(obj:Any) -> Data { //先判断是否可以转换 if !JSONSerialization.isValidJSONObject(obj) { ret ...
- 逆向-PE重定位表
重定位表 当链接器生成一个PE文件时,会假设这个文件在执行时被装载到默认的基地址处(基地址+RVA就是VA).并把code和data的相关地址写入PE文件.如果像EXE一样首先加载就是它image ...
- jedis哨兵模式的redis组(集群),连接池实现。(客户端分片)
java 连接redis 我们都使用的 是jedis ,对于redis这种频繁请求的场景我们一般需要对其池化避免重复创建,即创建一个连接池 ,打开jedis的 jar包我们发现,jedis对池已经有 ...
- hdu3359 Kind of a Blur
因为变化出来的是平均数,那么就可以对每一个变化出来的列方程,直接高斯消元就行了. #include<bits/stdc++.h> #define N 100005 #define LL l ...
- 自学Java第五章——《面向对象的基本特征》
面向对象的基本特征: 1.封装 2.继承 3.多态 6.1 封装 1.好处: (1)隐藏实现细节,方便使用者使用 (2)安全,可以控制可见范围 2.如何实现封装? 通过权限修饰符 面试题:请按照可见范 ...
- Mount error(5):Input/output error on mount
https://superuser.com/questions/850301/mount-error5input-output-error-on-mount When setting up a sha ...