Tôi đang sử dụng scipy.optimize.curve_fit
, nhưng tôi nghi ngờ nó hội tụ với mức tối thiểu địa phương và không tối thiểu toàn cầu.Đường cong tối thiểu toàn cầu SciPy phù hợp với
tôi đã cố gắng sử dụng ủ mô phỏng theo cách sau:
def fit(params):
return np.sum((ydata - specf(xdata,*params))**2)
p = scipy.optimize.anneal(fit,[1000,1E-10])
nơi specf
là đường cong tôi đang cố gắng để phù hợp. Các kết quả trong p
mặc dù rõ ràng tệ hơn mức tối thiểu được trả lại bởi curve_fit
ngay cả khi giá trị trả lại cho biết mức tối thiểu toàn cầu đã đạt được (see anneal).
Làm cách nào để cải thiện kết quả? Có một fitter đường cong toàn cầu trong SciPy?
Cảm ơn câu trả lời. Tôi nhận ra những rắc rối trong tối ưu hóa toàn cầu nhưng tôi đoán (hy vọng) rằng đường bao này là hành vi tương đối tốt. Cách tiếp cận của tôi trong việc sử dụng định mức L2 để đo lường chính xác có đúng không? – Gus