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 相关文章推荐
深入理解NumPy简明教程---数组2
Dec 17 Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
对python 命令的-u参数详解
Dec 03 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
pycharm导入源码的具体步骤
Aug 04 Python
pandas参数设置的实用小技巧
Aug 23 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
python使用smtplib模块发送邮件
Dec 17 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 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
详解php的socket通信
2015/08/11 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
深入浅析javascript继承体系
2017/10/23 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
three.js实现圆柱体
2018/12/30 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
Vue基础配置讲解
2019/11/29 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
JAVA代码查错题
2014/10/10 面试题
写自荐信三大法宝
2014/01/24 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
店面出租协议书范本
2014/11/28 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android