python最小二乘法拟合

知道函数形式,python用最小二乘法拟合函数参数

例子:

#-*- coding: utf-8 -*-
#最小二乘拟合
#知道函数形式了,拟合函数的参数
#通过leastsq函数对带噪声的实验数据x, y1进行数据拟合,可以找到x和真实数据y0之间的正弦关系的三个参数: A, k, theta
import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as pl
def func(x,p):
    """
    拟合函数A*sin(2*pi*k*x +theta)
    """
    A, k, theta = p
    #print A, k, theta
    return A*np.sin(2*np.pi*k*x+theta)
def residuals(p, y, x):
    return y-func(x, p)
x = np.linspace(0, -2*np.pi, 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] #函数拟合参数
plsq = leastsq(residuals, p0, args=(y1, x))
print u"真实参数:", [A, k, theta]
print u"拟合参数:", plsq[0]
pl.clf()
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-数值计算库

Optimization (scipy.optimize)

时间: 2024-11-08 22:00:40

python最小二乘法拟合的相关文章

python中matplotlib实现最小二乘法拟合的过程详解

这篇文章主要给大家介绍了关于python中matplotlib实现最小二乘法拟合的相关资料,文中通过示例代码详细介绍了关于最小二乘法拟合直线和最小二乘法拟合曲线的实现过程,需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小.最小二乘法还

最小二乘法拟合圆

有一系列的数据点 {xi,yi}.我们知道这些数据点近似的落在一个圆上.依据这些数据预计这个圆的參数就是一个非常有意义的问题.今天就来讲讲怎样来做圆的拟合.圆拟合的方法有非常多种,最小二乘法属于比較简单的一种. 今天就先将这样的. 我们知道圆方程能够写为: (x?xc)2+(y?yc)2=R2 通常的最小二乘拟合要求距离的平方和最小.也就是 f=∑((xi?xc)2+(yi?yc)2??????????????????√?R)2 最小. 这个算起来会非常麻烦. 也得不到解析解. 所以我们退而求其

最小二乘法拟合java实现源程序(转)

因为我所在的项目要用到最小二乘法拟合,所有我抽时间将C++实现的程序改为JAVA实现,现在贴出来,供大家参考使用./** * <p>函数功能:最小二乘法曲线拟合</p> * @param x 实型一维数组,长度为 n .存放给定 n 个数据点的 X 坐标 * @param y 实型一维数组,长度为 n .存放给定 n 个数据点的 Y 坐标 * @param n 变量.给定数据点的个数 * @param a 实型一维数组,长度为 m .返回 m-1 次拟合多项式的 m 个系数 * @

最小二乘法拟合圆 转

有一系列的数据点 {xi,yi}{xi,yi},我们知道这些数据点近似的落在一个圆上,根据这些数据估计这个圆的参数就是一个很有意义的问题.今天就来讲讲如何来做圆的拟合.圆拟合的方法有很多种,最小二乘法属于比较简单的一种.今天就先将这种. 我们知道圆方程可以写为: (x?xc)2+(y?yc)2=R2(x?xc)2+(y?yc)2=R2 通常的最小二乘拟合要求距离的平方和最小.也就是 f=∑((xi?xc)2+(yi?yc)2??????????????????√?R)2f=∑((xi?xc)2+

线性模型的最小二乘法拟合(转)

我们知道在二维坐标中,已知两点就可以确定一个线性方程,如果有n个数据点(x1,y1),(x2,y2),...(xn,yn),那么就会有n个线性方程,我们使用最小二乘法从这n个方程中拟合出一个最佳的线性方程,也就是求出方程的参数a,b 设某个已知的一元线性方程的表达式为:y=a+bx有一组权重相等的测量数据(xi,yi),假定自变量xi的误差可以忽略,那么在某个自变量xi下,对应的测量数据为yi,线性方程上的点为a+bxi,二者的偏差为 di=yi-(a+bxi),如果测量数据yi恰好都落在线性方

最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)

1.最小二乘原理 Matlab直接实现最小二乘法的示例: close x = 1:1:100; a = -1.5; b = -10; y = a*log(x)+b; yrand = y + 0.5*rand(1,size(y,2)); %%最小二乘拟合 xf=log(x); yf=yrand; xfa = [ones(1,size(xf,2));xf] w = inv(xfa*xfa')*xfa*yf';%直接拟合得到的结果 参考资料: 1.http://blog.csdn.net/lotus_

(转)最小二乘法拟合圆公式推导及vc实现[r]

(下文内容为转载,不过已经不清楚原创的是哪里了,特此说明) 转自: http://www.cnblogs.com/dotLive/archive/2006/10/09/524633.html 该网址下面有更多的讨论. 最小二乘法(least squares analysis)是一种 数学 优化 技术,它通过 最小化 误差 的平方和找到一组数据的最佳 函数 匹配. 最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小. 最小二乘法通常用于 曲线拟合 (least squares

Matlab 最小二乘法拟合非线性函数

1.最小二乘原理 参考资料: 1.http://blog.csdn.net/lotus___/article/details/20546259 2.http://blog.sina.com.cn/s/blog_5404ea4f0101afth.html 2.matlab实现最小二乘法 利用matlab的最小二乘拟合函数对非线性函数进行拟合,具体地拟合的函数: [q r] = lsqcurvefit(fun, q_0, xdata, ydata);输入参数:fun:需要拟合的函数,假定有n个需要拟

最小二乘法拟合多项式原理以及c++实现

转载请注明出处:http://blog.csdn.net/lsh_2013/article/details/46697625 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找数据的最佳函数匹配. c++实现代码如下: #include <iostream> #include <vector> #include <cmath> using namespace std; //最小二乘拟合相关函数定义 double sum(vector<do