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 27 Python
python解析xml文件实例分析
May 27 Python
python模块之time模块(实例讲解)
Sep 13 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
django在开发中取消外键约束的实现
May 20 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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实现在多维数组中查找特定value的方法
2015/07/29 PHP
PHP编写简单的App接口
2016/08/28 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
prototype 学习笔记整理
2009/07/17 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
python使用thrift教程的方法示例
2019/03/21 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
生日邀请函范文
2014/01/13 职场文书
国际贸易系求职信
2014/08/09 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
李强感恩观后感
2015/06/17 职场文书
靠谱的活动总结
2019/04/16 职场文书
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS