Używam scipy.optimize.curve_fit
, ale podejrzewam, że zbliża się do lokalnego minimum, a nie do globalnego minimum.SciPy globalna minimalna krzywa pasuje
Próbowałem za pomocą symulowanego wyżarzania w następujący sposób:
def fit(params):
return np.sum((ydata - specf(xdata,*params))**2)
p = scipy.optimize.anneal(fit,[1000,1E-10])
gdzie specf
jest krzywa Staram się dopasować. Wyniki w p
są jednak wyraźnie gorsze niż minimum zwracane przez curve_fit
, nawet jeśli zwrócona wartość wskazuje, że osiągnięto globalne minimum (see anneal).
Jak mogę poprawić wyniki? Czy w grze SciPy istnieje globalny krzywa?
Dzięki za odpowiedź. Zdaję sobie sprawę z problemów związanych z globalną optymalizacją, ale zgaduję (mając nadzieję), że ten kontur jest stosunkowo dobrze zachowany. Czy moje podejście do stosowania normy L2 do prawidłowego pomiaru sprawności? – Gus