我在迭代中使用 scipy.optimize.curve_fit()
。
我的问题是每当它无法拟合参数时,整个程序(以及迭代)就会停止,这是它给出的错误:
RuntimeError: 未找到最佳参数:函数调用次数已达到 maxfev = 800。
我知道为什么无法拟合。我的问题是是否有任何方法可以在Python 3.2.2中编写程序来忽略此类情况并继续执行?
我在迭代中使用 scipy.optimize.curve_fit()
。
我的问题是每当它无法拟合参数时,整个程序(以及迭代)就会停止,这是它给出的错误:
RuntimeError: 未找到最佳参数:函数调用次数已达到 maxfev = 800。
我知道为什么无法拟合。我的问题是是否有任何方法可以在Python 3.2.2中编写程序来忽略此类情况并继续执行?
您可以使用标准 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
引发的错误条件,而无需使您的程序中止。
maxfev=2000
),是否意味着拟合不可能,例如,我们试图拟合的曲线不是一个好的拟合,或者根本不是一个拟合?最终,如果您正在测试多个函数,则此错误是否告诉我们应该放弃引发错误的函数? - FaCoffee