lmfit 无法拟合或拟合没有计算出的不确定性,即使初始起始参数非常好,为什么?

问题描述

这个问题我已经遇到过几次了,它非常令人沮丧,但结果证明很容易解决。只是想把它放在这里,这样其他人可能会找到它,因为它过去让我很头疼,而且我从未设法找到有关这方面的信息。

问题的症状:

即使拟合数据的初始参数非常好(基于看起来非常接近数据的初始拟合),运行 model.fit(...) 要么无法完全拟合数据,要么确实拟合但在fit.fit_report() ## Warning: uncertainties could not be estimated:...。其他非常相似的拟合可能不会出错,因此似乎根本没有充分的理由。

请注意,这不是数据的限制,也不是任何超小或超大的拟合值实际上会使最小化器更难以处理。

解决方法

答案:

出于某种原因,lmfit 似乎不喜欢 np.float64。在很多情况下(至少对我而言),只需更改传入 np.float32 的数据类型即可完全解决问题。

即使这些值只有几个小数点长也是如此,因此在转换为 float32根本不会改变

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...