Python基于最小二乘法实现曲线拟合示例


Posted in Python onJune 14, 2018

本文实例讲述了Python基于最小二乘法实现曲线拟合。分享给大家供大家参考,具体如下:

这里不手动实现最小二乘,调用scipy库中实现好的相关优化函数。

考虑如下的含有4个参数的函数式:

Python基于最小二乘法实现曲线拟合示例

构造数据

import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
def logistic4(x, A, B, C, D):
  return (A-D)/(1+(x/C)**B)+D
def residuals(p, y, x):
  A, B, C, D = p
  return y - logisctic4(x, A, B, C, D)
def peval(x, p):
  A, B, C, D = p
  return logistic4(x, A, B, C, D)
A, B, C, D = .5, 2.5, 8, 7.3
x = np.linspace(0, 20, 20)
y_true = logistic4(x, A, B, C, D)
y_meas = y_true + 0.2 * np.random.randn(len(y_true))

调用工具箱函数,进行优化

p0 = [1/2]*4
plesq = optimize.leastsq(residuals, p0, args=(y_meas, x))
            # leastsq函数的功能其实是根据误差(y_meas-y_true)
            # 估计模型(也即函数)的参数

绘图

plt.figure(figsize=(6, 4.5))
plt.plot(x, peval(x, plesq[0]), x, y_meas, 'o', x, y_true)
plt.legend(['Fit', 'Noisy', 'True'], loc='upper left')
plt.title('least square for the noisy data (measurements)')
for i, (param, true, est) in enumerate(zip('ABCD', [A, B, C, D], plesq[0])):
  plt.text(11, 2-i*.5, '{} = {:.2f}, est({:.2f}) = {:.2f}'.format(param, true, param, est))
plt.savefig('./logisitic.png')
plt.show()

Python基于最小二乘法实现曲线拟合示例

Python 相关文章推荐
Python获取脚本所在目录的正确方法
Apr 15 Python
Python解析nginx日志文件
May 11 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
django自带的server 让外网主机访问方法
May 14 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
python中for循环变量作用域及用法详解
Nov 05 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
Python range与enumerate函数区别解析
Feb 28 Python
Python验证码截取识别代码实例
May 16 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
详解python之协程gevent模块
Jun 14 #Python
python 筛选数据集中列中value长度大于20的数据集方法
Jun 14 #Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 #Python
tensorflow: 查看 tensor详细数值方法
Jun 13 #Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 #Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 #Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 #Python
You might like
一篇不错的PHP基础学习笔记
2007/03/18 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
php开启openssl的方法
2014/05/15 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
php绘制圆形的方法
2015/01/24 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
node.js通过url读取文件
2020/10/16 Javascript
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
高中生期末评语大全
2014/01/28 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
学生逃课检讨书
2015/02/17 职场文书
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis