SciPy: least sq vs least squares

8

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?

    
visitor 24.12.2016, 17:02
quelle

1 Antwort

9

Kurze Antwort

  

Sollten wir immer least_squares () anstelle von lostsq () verwenden?

Ja.

  

Wenn ja, welchen Zweck dient letzteres?

Rückwärtskompatibilität.

Erklärung

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.

    
SFTP 24.12.2016, 21:45
quelle