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中的模块导入和读取键盘输入的方法
Oct 16 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
python 实现数字字符串左侧补零的方法
Dec 04 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
Python的collections模块真的很好用
Mar 01 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
Python常遇到的错误和异常
Nov 02 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 fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
python局域网ip扫描示例分享
2014/04/03 Python
python中bisect模块用法实例
2014/09/25 Python
初步探究Python程序的执行原理
2015/04/11 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
设计师珠宝:Ylang 23
2018/05/11 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
linux比较文件内容的命令是什么
2013/03/04 面试题
调解员先进事迹材料
2014/02/07 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
1亿有多大教学反思
2014/05/01 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
建房合同协议书
2016/03/21 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android