我正在使用scipy.optimize.leastsq尝试在存在噪声的情况下将大量参数拟合到实际数据中.偶尔会从minpack中使用NaN调用目标函数.这是scipy.optimize.leastsq的预期行为吗?有没有比在这种情况下返回NaN残差更好的选择?
以下代码演示了该行为:
import scipy.optimize
import numpy as np
xF = np.array([1.0, 2.0, 3.0, 4.0]) # Target value for fit
NOISE_LEVEL = 1e-6 # The random noise level
RETURN_LEN = 1000 # The objective function return vector length
def func(x):
if np.isnan(np.sum(x)):
raise ValueError('Invalid x: %s' % x)
v = np.random.rand(RETURN_LEN) * NOISE_LEVEL
v[:len(x)] += xF - x
return v
iteration = 0
while (1):
iteration += 1
x = np.zeros(len(xF))
y, cov = scipy.optimize.leastsq(func, x)
print('%04d %s' % …Run Code Online (Sandbox Code Playgroud)