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的setuptools框架下生成egg的教程
Apr 13 Python
python使用htmllib分析网页内容的方法
May 08 Python
python实现批量改文件名称的方法
May 25 Python
python爬虫正则表达式之处理换行符
Jun 08 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
python实现低通滤波器代码
Feb 26 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
python 下载文件的几种方法汇总
Jan 06 Python
Python自动化测试基础必备知识点总结
Feb 07 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横向重复区域显示二法
2008/09/25 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
应届毕业生应聘自荐信
2013/12/07 职场文书
好的演讲稿开场白
2013/12/30 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
教职工代表大会主持词
2014/04/01 职场文书
加入学生会演讲稿
2014/04/24 职场文书
文化产业实施方案
2014/06/07 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
Python基于百度API识别并提取图片中文字
2021/06/27 Python