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 相关文章推荐
TensorFlow损失函数专题详解
Apr 26 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
python判断自身是否正在运行的方法
Aug 08 Python
Python代码块及缓存机制原理详解
Dec 13 Python
python dataframe NaN处理方式
Dec 26 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
Python如何实现机器人聊天
Sep 10 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
python excel和yaml文件的读取封装
Jan 12 Python
pytorch 带batch的tensor类型图像显示操作
May 20 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
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
django中cookiecutter的使用教程
2020/12/03 Python
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
mysql中关键词exists的用法实例详解
2022/06/10 MySQL