SciPy bietet zwei Funktionen für nichtlineare Fehlerquadratprobleme:
optimize.leastsq()
verwendet nur den Levenberg-Marquardt-Algorithmus.
optimize.least_squares()
ermöglicht uns die Auswahl des Levenberg-Marquardt-, Trust Region Reflective- oder Trust Region Dogleg-Algorithmus.
Sollen wir immer least_squares()
anstelle von leastsq()
verwenden?
Wenn ja, welchen Zweck dient letzteres?
Sollten wir immer least_squares () anstelle von lostsq () verwenden?
Ja.
Wenn ja, welchen Zweck dient letzteres?
Rückwärtskompatibilität.
Die Funktion least_squares
ist neu in 0.17.1. Seine Dokumentation bezieht sich auf leastsq
as
Ein Legacy-Wrapper für die MINPACK-Implementierung des Levenberg-Marquadt-Algorithmus.
Das ursprüngliche Commit , das least_squares
eingeführt hat, heißt eigentlich leastsq
, wenn die Methode als "lm" ausgewählt wurde. Aber der Mitwirkende (Nikolay Mayorov) entschied dann das
least_squares könnte sich fester und homogener anfühlen, wenn ich einen neuen Wrapper für MINPACK-Funktionen schreibe, anstatt lostsq aufzurufen.
und so tat er es. Also, leastsq
wird nicht mehr von least_squares
benötigt, aber ich würde erwarten, dass es zumindest für eine Weile beibehalten wird, um alten Code nicht zu zerstören.
Tags und Links scipy least-squares levenberg-marquardt