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中类的一些方法分析
Sep 25 Python
详解Django中的form库的使用
Jul 18 Python
使用python实现rsa算法代码
Feb 17 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
Python线性回归实战分析
Feb 01 Python
python 查找文件名包含指定字符串的方法
Jun 05 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
python实现超市管理系统(后台管理)
Oct 25 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
Keras之fit_generator与train_on_batch用法
Jun 17 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
Python爬取科目四考试题库的方法实现
Mar 30 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
PHP操作数组相关函数
2011/02/03 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
JS与框架页的操作代码
2010/01/17 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python中请不要再用re.compile了
2019/06/30 Python
在pycharm中显示python画的图方法
2019/08/31 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
有模特经验的简历自我评价
2013/09/19 职场文书
社会保险接收函
2014/01/12 职场文书
初中作文评语
2014/12/25 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
给病人的慰问信
2015/03/23 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
导游词之青岛崂山
2019/12/27 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL