问题描述
这个问题我已经遇到过几次了,它非常令人沮丧,但结果证明很容易解决。只是想把它放在这里,这样其他人可能会找到它,因为它过去让我很头疼,而且我从未设法找到有关这方面的信息。
问题的症状:
即使拟合数据的初始参数非常好(基于看起来非常接近数据的初始拟合),运行 model.fit(...)
要么无法完全拟合数据,要么确实拟合但在fit.fit_report()
## Warning: uncertainties could not be estimated:...
。其他非常相似的拟合可能不会出错,因此似乎根本没有充分的理由。
请注意,这不是数据的限制,也不是任何超小或超大的拟合值实际上会使最小化器更难以处理。
解决方法
答案:
出于某种原因,lmfit 似乎不喜欢 np.float64
。在很多情况下(至少对我而言),只需更改传入 np.float32
的数据类型即可完全解决问题。
即使这些值只有几个小数点长也是如此,因此在转换为 float32
时根本不会改变。