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继承和抽象类的实现方法
Jan 14 Python
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
python安装教程 Pycharm安装详细教程
May 02 Python
Python设计模式之门面模式简单示例
Jan 09 Python
Python温度转换实例分析
Jan 17 Python
Python自定义线程池实现方法分析
Feb 07 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 Python
python可以用哪些数据库
Jun 22 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
python urllib和urllib3知识点总结
Feb 08 Python
Python语言规范之Pylint的详细用法
Jun 24 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
解决Spyder中图片显示太小的问题
2018/04/27 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
小学生倡议书范文
2014/05/13 职场文书
争先创优演讲稿
2014/09/15 职场文书
农业生产宣传标语
2014/10/08 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
Java内存模型之happens-before概念详解
2021/06/13 Java/Android
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS