Estoy usando scipy.optimize.curve_fit
, pero sospecho que está convergiendo a un mínimo local y no al mínimo global.SciPy curva global mínima encajar
He intentado utilizar el recocido simulado de la siguiente manera:
def fit(params):
return np.sum((ydata - specf(xdata,*params))**2)
p = scipy.optimize.anneal(fit,[1000,1E-10])
donde specf
es la curva que estoy tratando de encajar. Sin embargo, los resultados en p
son claramente peores que el mínimo devuelto por curve_fit
, incluso cuando el valor de retorno indica que se alcanzó el mínimo global (see anneal).
¿Cómo puedo mejorar los resultados? ¿Hay un instalador de curva global en SciPy?
Gracias por la respuesta. Me doy cuenta de los problemas en la optimización global, pero supongo (espero) que este contorno se comporte relativamente bien. ¿Mi enfoque al usar la norma L2 para medir la aptitud es correcto? – Gus