Python用curve_fit进行多元拟合

news2024/12/24 0:20:27

文章目录

    • 入门
    • 参数
    • 多元拟合

入门

scipy.optimize中,curve_fit函数可调用非线性最小二乘法进行函数拟合,例如,现在有一个高斯函数想要被拟合

y = a exp ⁡ − ( x − b c ) 2 y = a\exp-(\frac{x-b}{c})^2 y=aexp(cxb)2

则调用方法如下

import numpy as np
from scipy.optimize import curve_fit
def gauss(x, a, b, c):
    return a*np.exp(-(x-b)**2/c**2)

x = np.arange(100)/10
y = gauss(x, 2, 5, 3) + np.random.rand(100)/10

# 非线性拟合 abc为参数;para为拟合评价
abc, para = curve_fit(gauss, x, y)
print(abc)
# [2.03042233 5.01182397 3.10994351]

其中,curve_fit在调用时输入了三个参数,分别是拟合函数、自变量、因变量。返回值abcpara分别为拟合参数和拟合的协方差,最终得到abc的值与预设的2,0.5, 3是比较接近的,其拟合效果可以画图查看一下

import matplotlib.pyplot as plt
plt.scatter(x, y, marker='.')

Y = gauss(x, *abc)
plt.plot(x, Y, lw=1)
plt.show()

效果如下

在这里插入图片描述

参数

curve_fit的装形式如下

curve_fit(f, xdata, ydata, p0=None, sigma=None, absolute_sigma=False, check_finite=True, bounds=(-inf, inf), method=None, jac=None, *, full_output=False, **kwargs)

除了f, xdata, ydata已经用过之外,其他参数的含义为

  • p0 拟合参数初始值
  • sigma 相对精度要求
  • absolute_sigma 绝对精度要求
  • check_finite 有限性检测开关
  • bounds 拟合范围
  • method 拟合方法,可选‘lm’, ‘trf’, ‘dogbox’,与least_squares函数中定义相同
  • jac 雅可比矩阵,与least_squares中定义相同

最小二乘函数:least_squares

多元拟合

尽管curve_fit的参数列表中,只给出了xdata, ydata作为拟合参数,而xdata只有一组,但curve_fit是具备多元拟合潜力的。

唯一需要注意的是,当多元拟合函数的返回值必须为一维数组,示例如下

# 创建一个函数模型用来生成数据
def func1(x, a, b, c, d):
    r = a * np.exp(-((x[0] - b) ** 2 + (x[1] - d) ** 2) / (2 * c ** 2))
    return r.ravel()
 
# 生成原始数据
xx = np.indices([10, 10])
z = func1(xx, 10, 5, 2, 5) + np.random.normal(size=100)/100
abcd, para = curve_fit(func1, xx, z)
print(abcd)
# [10.00258587  5.00146314  1.99952885  5.00138184]

可以发现拟合结果与预设的abcd还是比较接近的,下面绘制三维图像来更加直观地查看一下

z = z.reshape(10, 10)
Z = func1(xx, *abcd).reshape(10,10)

ax = plt.subplot(projection='3d')
ax.scatter3D(xx[0], xx[1], z, color='red')
ax.plot_surface(xx[0], xx[1], Z, cmap='rainbow')
plt.show()

结果如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zookeeper源码分析——Follower和Leader状态同步源码

Follower和Leader状态同步源码 当选举结束后,每个节点都需要根据自己的角色更新自己的状态。选举出的Leader更新自己状态为 Leader,其他节点更新自己状态为 Follower Leader更新状态入口: leader.lead() Follower更新状态入口: f…

VUE3 学习笔记(九)使用富文本编辑器tinymce最新版

目录 1、安装相关依赖 2、下载中文包 3. 引入皮肤和汉化包 4. 封装组件:在src/components下新建TEditor.vue,并写入以下代码 5. 注册及使用组件 6. Tinymce 版本(截至2023-04-18) 1、安装相关依赖 npm install tinymce -S npm install ti…

python+vue小型公司人事企业员工培训报名管理系统

该系统主要实现了公告信息管理、个人考勤管理、培训信息管理、员工管理、员工工资管理等主要模块功能。具体功能如下所示: 1. 公告信息管理:查看公告标题、公告类型、公告图片、发布日期等一系列信息。 2. 个人考勤管理:查看考勤名称、员工工…

Springboot整合Quartz定时任务框架(Spring解决方案)

目录 前言 介绍 集成 POM依赖 基础配置 1、配置数据源 2、配置JOB实例与触发器 3、配置SchedulerJobFactory 4、配置SchedulerFactoryBean 业务集成 job编写 接口编写 接口实现 前言 系统现在有定时任务触发业务场景的需求,并且频率及次数不固定&…

【案例教程】FVCOM流域、海洋水环境数值模拟方法及实践技术应用

近年来,随着人类活动产生营养负荷的增加,流域、海洋生态系统面临严重威胁。近岸水质数值模是近岸水环境保护的有效工具,已经应用于近岸水环境污染控制、水质规划管理中。FVCOM在近岸水环境模拟方面具有一定优势,如采用非结构化三角…

王道计组(23版)2_数据的表示和运算

1.数制和编码 十进制转换为二进制: 原码: [0]原0,0000 [-0]原1,0000 -1无法表示 补码: 按位取反,末位加1 [0.0000]补[-0.0000]补0.00000 反码: 按位取反 [0]反0,0000 [-0]反1,1111 移码: 与补码仅符号位…

从前端角度快速理解Transformer

从前端角度快速理解Transformer Transformer的三步曲从前端角度(SEO和TDK)理解TransformerSEO与TDK一个例子来理解 总结 声明:本文为原创,未经同意请勿转载或爬取,感谢配合😄 chatGPT今年年初的时候是非常火…

操作系统实验一 并发程序设计

1.实验目的 掌握Linux环境下,多进程之间并发程序设计方法,并通过程序的运行结果来验证分时系统和并发程序设计的优越性。 2.实验要求 熟悉Linux操作系统子进程创建方法以及任务执行时间测量方法 3.实验内容 在单进程(单用户、单任务&#xff…

【MYSQL索引失效的场景有哪些】

创建一张表:id为主键(primary key)name为普通建(index) 插入数据: 用主键索引查询: 用普通建索引查询 对于执行计划,参数有: possible_keys 字段表示可能用到的索引&am…

KMM初探与编译过程详解

本文字数:22817字 预计阅读时间:58分钟 简介 KMM, 即Kotlin Multiplatform Mobile,是由Kotlin发布的移动端跨平台框架。相比于其他跨平台框架,KMM是原生UI逻辑共享的理念,共享重复逻辑性的工作来提升开发效…

Maven配置国内源以及jar下载失败处理详解

目录 1,配置Idea的Maven xml文件不存在: xml文件存在: 2,重新下载jar包 3,注意事项总结 1,配置Idea的Maven 需要配置的项目有两个,一个是当前项目,一个是新项目: 打…

抖音账号矩阵搭建管理获客系统

抖音矩阵号管理系统是一款企业矩阵运营管理工具,能够有效地帮助企业管理多个矩阵账号,并实现批量管理。在短视频矩阵系统中,自动获客工具和智能AI的帮助下,一个人也能轻松地管理多个账号。 一、矩阵账号管理: 首先&a…

leetCode算法第三天

继续练习leetcode中关于字符串的算法题,越练越觉得自己编码思想还很欠缺,继续努力。 文章目录 有效的括号括号生成串联所有单词的子串最长有效括号 有效的括号 leetcode链接:https://leetcode.cn/problems/valid-parentheses/ 解题思路&…

SPI协议

SPI数据接口 SPI(Serial Peripheral Interface)串行外设接口的简称,它是一种同步全双工通信协议。有 3根或者 4根数据线组成,包括 CLK、SOMI、SIMO、STE: CLK为时钟线,由主机控制输出。 SOMI…

国产数字温度传感芯片M117 Pin to Pin替代PT100和PT1000

高精度数字温度传感芯片 - M117,可Pin to Pin替代PT100/PT1000,且具功能差异化优势,支持行业应用的定制化需求。高测温精度0.1℃,用户无需进行校准。芯片感温原理基于CMOS半导体PN节温度与带隙电压的特性关系,经过小信…

电脑开机进不了系统卡在加载界面怎么办?

电脑开机进不了系统卡在加载界面怎么办?有用户电脑弹出需要进行系统更新,不小心点到了系统更新的选项。因为自己不想进行系统更新,所以马上将电脑关机了。但是关机之后却发现系统一直卡在开机的界面中,无法进入桌面中了。那么这个…

如何在Anaconda下安装pytorch(conda安装和pip安装)

前言 文字说明 本文中标红的,代表的是我认为比较重要的。 版本说明 python环境配置:jupyter的base环境下的python是3.10版本。CUDA配置是:CUDA11.6。目前pytorch官网提示支持的版本是3.7-3.9 本文主要用来记录自己在安装pytorch中…

乙肝80%以上由妈妈传给孩子 5岁以下治愈率超六成

中国是乙肝大国。目前,乙肝病毒感染人数仍超过7000万。通过医务人员多年的努力,母婴传播感染率明显下降。到目前为止,已降至0.3%左右。每年仍有5万名儿童感染乙肝病毒。目前,儿童慢性乙肝仍在180万左右,绝对数仍是世界…

Node【模块系统】

文章目录 🌟前言🌟Nodejs模块系统🌟为什么需要模块化🌟什么是Nodejs模块🌟Nodejs模块分类🌟文件模块的分类🌟调用内置模块🌟调用文件模块 🌟Nodejs模块使用🌟…

2023年网络安全的发展趋势是怎样的?

数据安全越来越重要。 我国《数据安全法》提出“建立健全数据安全治理体系”,各地区部门均在探索和简历数据分类分级、重要数据识别与重点保护制度。 数据安全治理不仅是一系列技术应用或产品,更是包括组织构建、规范制定、技术支撑等要素共同完成数据…