SciPy curve_fit 运行时错误,停止迭代

16

我在迭代中使用 scipy.optimize.curve_fit()

我的问题是每当它无法拟合参数时,整个程序(以及迭代)就会停止,这是它给出的错误:

RuntimeError: 未找到最佳参数:函数调用次数已达到 maxfev = 800。

我知道为什么无法拟合。我的问题是是否有任何方法可以在Python 3.2.2中编写程序来忽略此类情况并继续执行?

1个回答

20

您可以使用标准 Python 异常处理来捕获由 curve_fit 引发的错误,特别是在优化无法找到解决方案的情况下。因此,可以编写以下代码:

try:
    popt,pcov = scipy.optimize.curve_fit(f, xdata, ydata, p0=None, sigma=None)

except RuntimeError:
    print("Error - curve_fit failed")

使用此结构可以捕获并处理由curve_fit引发的错误条件,而无需使您的程序中止。


1
非常感谢。我是Python的新手,这个错误一直困扰着我。我阅读了有关try-except错误处理程序的手册并理解了它。再次感谢... - makhlaghi
2
所以,最后简单总结一下。像这样的错误(即使将其提高到maxfev=2000),是否意味着拟合不可能,例如,我们试图拟合的曲线不是一个好的拟合,或者根本不是一个拟合?最终,如果您正在测试多个函数,则此错误是否告诉我们应该放弃引发错误的函数? - FaCoffee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接