使用scipy.optimize.curve_fit对数据进行幂函数、指数拟合。

1.函数各参数说明
scipy.optimize.curve_fit(f, xdata, ydata, p0=None, sigma=None, absolute_sigma=False, check_finite=True, bounds=(- inf, inf), method=None, jac=None, *kwargs)
(1)f:模型函数;即需要进行拟合的函数,含有自变量X和其他变量如A,B,C等。
如想拟合函数为:$$y = a
(x-b)^c

def PowerFunction(x, A, B,C):y = A*(x-B)**Creturn y

(2)xdata:观测数据自变量(数组),长度为M;
(3)ydata:观测数据因变量(数组),长度为M;
(4)p0:对参数的初始猜测(长度N)。如果为None,那么初始值将全部为1。确定初始值,可以减少计算量。
(5)method:用于优化的方法,对于无约束的问题默认为lm,如果提供了边界则默认为trf。
(6)函数返回值:
popt :返回残差最小时参数的值;
pcov:popt的估计协方差。

2.使用函数
代码来源:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html

import matplotlib.pyplot as plt
from scipy.optimize import curve_fitdef func(x, a, b, c):return a * np.exp(-b * x) + c#Define the data to be fit with some noise
xdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
rng = np.random.default_rng()
y_noise = 0.2 * rng.normal(size=xdata.size)
ydata = y + y_noise
plt.plot(xdata, ydata, 'b-', label='data')#Fit for the parameters a, b, c of the function func
popt, pcov = curve_fit(func, xdata, ydata)
plt.plot(xdata, func(xdata, *popt), 'r-',label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))#Constrain the optimization to the region of 0 <= a <= 3, 0 <= b <= 1 and 0 <= c <= 0.5
popt, pcov = curve_fit(func, xdata, ydata, bounds=(0, [3., 1., 0.5]))
plt.plot(xdata, func(xdata, *popt), 'g--',label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))#R²
calc_ydata = [func(i, popt[0], popt[1],popt[2]) for i in xdata]
res_ydata  = np.array(ydata) - np.array(calc_ydata)
ss_res     = np.sum(res_ydata**2)
ss_tot     = np.sum((ydata - np.mean(ydata))**2)
r_squared  = 1 - (ss_res / ss_tot)plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

结果:

scipy.optimize.curve_fit相关推荐

  1. python 曲线拟合(numpy.polyfit、scipy.optimize.curve_fit)

    小白的学习笔记,欢迎各位大神批评指正. python 曲线拟合 (一次二次比较简单,直接使用numpy中的函数即可,来自 <https://blog.csdn.net/yefengzhichen ...

  2. scipy中的scipy.optimize.curve_fit

    scipy中的scipy.optimize.curve_fit 这里写目录标题 scipy中的scipy.optimize.curve_fit 参数 Return scipy.optimize.``c ...

  3. scipy.optimize.curve_fit函数用法解析

    scipy.optimize.curve_fit函数用法解析 转:https://zhuanlan.zhihu.com/p/144353126 optimize.curve_fit()函数,用于日常数 ...

  4. scipy.optimize.curve_fit-曲线拟合

    Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值.积分.优化.图像处理.常微分方程数值解的求解.信号处理等问题.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解 ...

  5. python中curve fit_scipy.optimize.curve_fit函数用法解析

    在日常数据分析中,免不了要用到数据曲线拟合,而optimize.curve_fit()函数正好满足你的需求 scipy.optimize.curve_fit(f,xdata,ydata,p0=None ...

  6. python实例 优化目标函数_Scipy优化算法--scipy.optimize.fmin_tnc()/minimize()

    scipy中的optimize子包中提供了常用的最优化算法函数实现,我们可以直接调用这些函数完成我们的优化问题. scipy.optimize包提供了几种常用的优化算法. 该模块包含以下几个方面 使用 ...

  7. python数据挖掘学习笔记】十四.Scipy调用curve_fit实现曲线拟合

    #2018-03-28 10:02:08 March Wednesday the 13 week, the 087 day SZ SSMR python数据挖掘学习笔记]十四.Scipy调用curve ...

  8. 高级优化算法scipy.optimize

    scipy中的optimize子包中提供了常用的最优化算法函数实现,我们可以直接调用这些函数完成我们的优化问题. scipy.optimize包提供了几种常用的优化算法. 该模块包含以下几个方面 使用 ...

  9. scipy.optimize函数介绍

    scipy.optimize模块使用 前言 一.scipy.optimize模块包含什么? 二.使用步骤 1.函数介绍 前言 简单使用scipy.optimize,训练逻辑回归损失函数,得到权值. 一 ...

  10. python网页优化公司_使用python优化scipy.optimize.minimize公司

    我将逐行检查您的代码,并强调一些问题:from scipy.optimize import minimize import numpy as np prices=np.array([[1.5,50,3 ...

最新文章

  1. 拖拽公式图片、一键转换LaTex公式,这款开源公式识别神器比Mathpix Snip更适合你...
  2. 电子书推荐--《Python灰帽子》,python黑客编程
  3. linux nand 坏块_Nand Flash 中的坏块(Bad Block)
  4. mysql all_同样是MySQL的all privileges有啥不同?
  5. [分享]iOS开发-实现view底部控件随着键盘的弹出而上移的效果
  6. (六)nodejs循序渐进-数据流和文件操作(基础篇)
  7. js异步解决方案 --- 回调函数 vs promise vs generater/yield vs async/await
  8. 小瓦怕扫地机器人_小瓦扫地机器人青春版评测:便宜有好货
  9. 影视后期好学吗?C4D精品教学合集,看完必成大神!(附链接)
  10. 手机APP测试需要注意的问题
  11. SMT工艺培训一日谈
  12. linux根据文件名批量下载,Linux下多文件按照指定顺序批量解压和按照指定文件名更名...
  13. 计算机二进制除法除数为0,怎么做二进制数的除法运算
  14. H.266/VVC:色度帧内预测模式之CCLM技术
  15. ABB智能定位器TZID-C说明书(中文版)
  16. WireShark抓包新手入门教程1
  17. 把TeamTalk(即时通讯项目)中的线程池连接池拆出来单独测试。
  18. IntelliJ IDEA中文网
  19. 区块链公有链、私有链和联盟链是什么?它们有什么特点?
  20. 特斯拉线圈的制作教程

热门文章

  1. 短信转移到另一个手机接收_如何将iPhone手机接收短信同步到另外一台设备上?...
  2. vue echarts数据变化重新渲染_vue实例创建及数据挂载渲染
  3. python整数类型进制表示_Python的基本数值类型
  4. 短信平台建设方案_五大垂直行业工业互联网平台建设方案
  5. gpu opencl 向量加_【Embedding】GloVe:大规模语料中快速训练词向量
  6. (day 38 - 双指针) 剑指 Offer 52. 两个链表的第一个公共节点
  7. qt 隐藏控制台_QT去掉CONSOLE | 学步园
  8. xposed hook 静态函数_Xposed 实现原理分析
  9. java产生随机数(可个性化定制)
  10. Javascript:创建对象的方式