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 相关文章推荐
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
python和shell获取文本内容的方法
Jun 05 Python
python 文件查找及内容匹配方法
Oct 25 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
spyder 在控制台(console)执行python文件,debug python程序方式
Apr 20 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
Python更改pip镜像源的方法示例
Dec 01 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实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
JavaScript数据类型检测代码分享
2015/01/26 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Python中__init__.py文件的作用详解
2016/09/18 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
师德师风剖析材料
2014/09/30 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
商场收银员岗位职责
2015/04/07 职场文书
《所见》教学反思
2016/02/23 职场文书
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python