首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最小二乘法曲线拟合

最小二乘法曲线拟合

作者头像
裴来凡
发布2022-05-29 10:13:31
发布2022-05-29 10:13:31
1.3K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
import scipy as sp
#导入SciPy模块内置的最小二乘法函数
from scipy.optimize import leastsq
import pylab as plt
m=9#多项式的次数
#定义一个示例函数:y=sin(6x^4+8x^4)+12
def real_func(x):
    return np.sin(6*x**4+8*x**4)+12
#定义多项式用于拟合曲线
def fit_func(p,x):
    f=np.poly1d(p)
    return f(x)
#定义偏差函数
def residuals(p,y,x):
    return y-fit_func(p,x)
#随机选取10个样本数据点,作为x
x=np.linspace(0, 1, 15)
#定义曲线可视化所需的数据点个数
x_show=np.linspace(0,1,1000)
y0=real_func(x)
#加入正态分布噪声后的y
y1=[np.random.normal(0,0.1)+y for y in y0]
#随机产生一组多项式分布的参数
p0=np.random.randn(m)
#利用内置的最小二乘法函数计算曲线拟合参数
plsq=leastsq(residuals,p0,args=(y1,x))
#输出拟合参数
print ('Fitting Parameters:',plsq[0])
#可视化拟合曲线、样本数据点以及原函数曲线
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.plot(x_show,real_func(x_show),color='b',linestyle='-',marker='',label='真实曲线')
plt.plot(x_show,fit_func(plsq[0],x_show),color='g',linestyle='--',marker='',label='拟合曲线')
plt.plot(x,y1,'yo',label='带噪声的样本数据点')
plt.legend()
plt.show()

Fitting Parameters: [ 1.26607557e+04 -4.98135295e+04 7.91163644e+04 -6.47495637e+04 2.88643748e+04 -6.80602407e+03 7.57452772e+02 -2.89393911e+01 1.19739704e+01]

算法:最小二乘法曲线拟合是通过最小化误差的平方和寻找数据的最佳函数匹配,应用在曲线拟合、线性回归预测,数理统计等领域。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档