首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >curve_fit返回正确参数的无限协方差矩阵

curve_fit返回正确参数的无限协方差矩阵
EN

Stack Overflow用户
提问于 2022-09-01 14:27:48
回答 2查看 58关注 0票数 0

我正在测试scipy.optimize函数curve_fit()。我正在测试一个二次函数,我已经为这个问题手动分配了x和y数据。我确实得到了我的参数值的预期答案,基本上是我输入的每一个猜测。但是,我注意到,对于第一个参数不接近于0的猜测(特别是在1之后),我得到了一个充满无穷大的协方差矩阵。我不知道为什么这么简单的测试失败了。

代码语言:javascript
运行
AI代码解释
复制
# python version: 3.9.7
# using a venv
# numpy version: 1.23.2
# scipy version: 1.9.0
import numpy as np
from scipy.optimize import curve_fit

# data taken from a quadratic function of: y = 3*x**2 + 2
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=np.float64)
y = np.array([2, 5, 14, 29, 50, 77, 110, 149, 194, 245, 302], dtype=np.float64)

# quadratic function
def func(x, a, b, c):
    return a * x**2 + b * x + c

# test to reproduce success case - notice that we have success when changing the first value upto a value of 1.0
success = [0, 0, 0]
# test to reproduce failure case
failure = [4, 0, 0]

popt, pcov = curve_fit(func, x, y, p0=failure)  # change p0 to success or failure

print(popt)  # expected answer is [3, 0, 2]
print(pcov)  # covariance matrix
EN

回答 2

Stack Overflow用户

发布于 2022-09-03 14:02:28

我不知道你为什么要期待一个不同的协方差矩阵。文件上说:

如果解处的雅可比矩阵没有满秩,那么‘lm’方法返回一个填充了np.inf的矩阵

据我所知,雅可比矩阵是在优化过程中估计出来的,取决于您使用的是哪种初始化,可能会发生上述情况。请注意,popt的结果仍然收敛!

票数 0
EN

Stack Overflow用户

发布于 2022-10-04 20:27:51

当每个变量被优化时,协方差矩阵才是真正有用的(而且通常只能计算)。这通常意味着变量从它的初始值移开,并且以某种方式,这样就可以确定不改变这个变量的值对拟合质量(通常是卡方)的依赖。

结果还表明,如果初始猜测是错误的,则可能找不到解决方案--有些变量可能实际上不会从它们的初始值中移出。我想这就是你现在所发生的事。

"0“的初始值特别麻烦,因为fit不知道”如何为零“。是“小于1e-16级”还是“小于1级”?即使使用[4, 0.01, 0.01]的初始值,也会得到一个很好的解决方案。

另一个潜在的问题是,您的“数据”正是由模型函数和值提供的。在“正确的解”中,残差将非常接近于零,并且将导数的Jacobian矩阵(关于变量的失配)转换为协方差在数值上是不稳定的。对于实际数据来说,这是非常不可能的,但是您可能希望在建模的数据中添加少量的噪声。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73576000

复制
相关文章
PrimeNG TreeTable异步加载子树[通俗易懂]
1. PrimeNG官网:https://www.primefaces.org/primeng/#/treetable
全栈程序员站长
2022/09/01
8150
Layui数据表格的动态加载
Layui是一个很好的前端框架,很多人都会用到,layui的数据表格这个就是从数据库查询出来的数据渲染到表格上。
PHY_68
2020/10/28
2.8K0
Layui数据表格的动态加载
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.2K0
RDP你的凭据不工作/RDP密码不刷新
如果你不属于上述的情况,请查看:https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/troubleshoot/rdp-error-general-troubleshooting#check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer
阿龙w
2022/12/02
12.8K0
RDP你的凭据不工作/RDP密码不刷新
预加载之——js 文件如何实现只加载不执行
性能优化很常见的一个方式是提前加载文件,本文讨论如何在其他依赖未加载情况下提前加载一个.js文件。
前端知知
2022/09/29
6.2K0
128 天不上班不工作:照样领工资 9.5 万
原告:北京和风畅想科技有限公司 被告:杜某,男,1988年出生 和风畅想公司向法院提出诉讼请求: 1、判决无须撤销《解除劳动关系通知书》,双方无需继续履行劳动合同; 2、判决和风畅想公司无须向杜某支付自2020年2月29日至2020年7月5日期间工资收入损失95172.41元。 事实和理由: 2020年11月2日,和风畅想公司收到北京市朝阳区劳动人事争议仲裁委员会作出的京朝劳人仲字[2020]第16281号裁决书(以下简称“第16281号裁决书”),和风畅想公司不服该裁决。 不服裁决理由: 一、第1628
云头条
2022/10/09
2.3K0
128 天不上班不工作:照样领工资  9.5 万
「过期不候」,有生命周期的 TiDB 数据表
近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 比赛圆满落幕。今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自全球各地的队伍报名,首次实现全球联动。经过 2 天时间的极限挑战, 大赛涌现出不少令人激动的项目。
PingCAP
2021/03/12
4410
JVM | 类加载是怎么工作的
在程序世界的大海洋中,类就像是构建一切的基石。它们是构建Java应用的原材料,类加载器则是这个世界的建筑工人。他们负责将构建城市所需的材料搬运到工地(JVM)。了解类加载器的工作原理,就像了解城市建设的过程,能够让我们更好地理解和控制程序的运行。现在,让我们深入探索JVM的类加载器,解析它的奥秘,开启这趟神奇的旅程吧!
kfaino
2023/09/29
3430
JVM | 类加载是怎么工作的
webpack的watch选项不工作原因分析
今天尝试将以前创建的一个前端项目改为webpack编译,该项目使用了VueJS v2.0,原来是编写gulp脚本完成构建的。很自然就直接用vue-cli来搞定这个事了。 使用vue-cli创建项目 因为以前用过webpack,而vue-cli创建的项目底层其实还是使用webpack构建的,所以使用起来还是很简单的。 # 使用yarn,这个命令是跟npm兼容的,但速度快很多,而且可以保证依赖包版本的一致性,强烈推荐 yarn install --global vue-cli vue-cli webpack v
jeremyxu
2018/05/10
4.2K0
常用功能加载宏——工作表目录
在一个工作簿中,如果工作表太多了,要选中需要操作的Sheet还挺麻烦的。对于Excel用的不大熟练的人,只会按左下角的方向箭头,然后用眼睛去查找,有的人为了让Excel显示多一些工作表名称,还会把右下角的滚动条拉的只剩一点点,造成操作Sheet都不方便。
xyj
2020/07/28
9930
常用功能加载宏——工作表目录
mongo minio on openebs 工作量不饱满教程
作者 | 老根 - laf框架作者 笔者在开发laf(https://github.com/lafjs/laf)的过程中依赖了mongo minio这些组件,本文就如何对这些组件最佳实践来做个介绍。
sealyun
2022/05/16
3.9K0
mongo minio on openebs 工作量不饱满教程
Java中类加载器的工作原理
一说Java代码的执行, 接触过Java代码的同学肯定会想到: 编写, 编译, 运行这三个阶段. 其中:
用户7353950
2022/06/23
5360
Java中类加载器的工作原理
常用功能加载宏——工作簿目录
要创建工作簿的目录,其实就是遍历获取所有的文件,然后过滤一下,再增加超链接就可以:
xyj
2020/07/28
9570
常用功能加载宏——工作簿目录
为什么不建议你国庆前找工作
最近在面试过程中,以上内容就是简历的问题。打算换工作或正在找工作的朋友,可以参考一下。
李才哥
2019/09/25
4K0
C++都从事哪些工作能挣钱不?
java大行其道的今天我们来谈谈c++,现在学c++的人越来越少了。问题在哪?互联网盛行的年代,能吸引眼球的就是能赚钱的。所以一看招聘,发现做java开发是抢手货,起步价比c++高。 再则学习c++难度都比其它语言较高。而它的学习难度,太复杂性。现在c++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替c++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器,网络等。 一、游戏开发 游戏开发都有哪些,引擎开发(
程序员互动联盟
2018/03/15
2.8K0
C++都从事哪些工作能挣钱不?
远程桌面失败:你的凭据不工作
  然后按照以下操作,将默认设置“仅来宾—本地用户以来宾身份验证”,更改为“经典:本地用户以自己的身份验证”。
chenchenchen
2019/09/03
9.8K0
远程桌面失败:你的凭据不工作
常用功能加载宏——拆分工作表
有合并工作表,自然也离不开拆分工作表,将一个总表,按照某一列的内容拆分为多个工作表,然后可以再结合前面的一个工作簿的工作表另存为工作簿功能,就可以生成多个工作簿进行分发了:
xyj
2020/07/28
2.4K0
常用功能加载宏——拆分工作表
常用功能加载宏——一个工作簿的工作表另存为工作簿
前面实现了多个工作簿和合并到一个工作簿的功能,反过来,将一个工作簿里的工作表,另存为多个工作簿,然后分发给不同的人,应该也是经常会碰到的。让我们看看使用VBA如何实现:
xyj
2020/07/28
1.6K0
常用功能加载宏——一个工作簿的工作表另存为工作簿
Activiti工作流框架学习笔记(一)之通用数据表详细介绍
低于5.6.4的MySQL版本不支持时间戳或毫秒级的日期。更糟糕的是,某些版本在尝试创建此类列时将引发异常,而其他版本则不会。执行自动创建/升级时,引擎将在执行DDL时更改它。使用DDL文件方法时,既可以使用常规版本也可以使用其中带有mysql55的特殊文件(这适用于低于5.6.4的任何版本)。后一个文件将具有没有毫秒精度的列类型。
朱季谦
2020/01/08
4.1K0
Activiti工作流框架学习笔记(一)之通用数据表详细介绍
点击加载更多

相似问题

角4动画在init组件上执行。

11

子闪电组件init在父init salesforce之前执行

20

在git init上执行脚本

24

React/material上升按钮在init上执行onTouchTap

36

如何跳过在可重用容器上执行init脚本?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文