首页 > 编程语言 > 详细

python最小二乘法拟合

时间:2015-02-06 12:44:18      阅读:1597      评论:0      收藏:0      [点我收藏+]

知道函数形式,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)

python最小二乘法拟合

原文:http://www.cnblogs.com/zlreco/p/4276755.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!