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, )
y1 = y0 + 2*np.random.randn(len(x))
p0 = #函数拟合参数
plsq = leastsq(residuals, p0, args=(y1, x))
print u"真实参数:",
print u"拟合参数:", plsq
pl.clf()
pl.plot(x, y0, label=u"真实数据:")
pl.plot(x, y1, label=u"噪声数据")
pl.plot(x, func(x, plsq), label=u"拟合数据")
pl.legend()
pl.show()
参考:
SciPy-数值计算库
Optimization (scipy.optimize)
页:
[1]