Minimierung bzw Fit

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
janine
User
Beiträge: 4
Registriert: Dienstag 9. Juli 2013, 15:11

Hallo,

Ich habe eine ziemlich komplizierte vektorwertige Funktion, die ich gerne an einen Datensatz (eine Schar von Kurven) fitten würde.
Ich sehe da zwei Möglichkeiten, entweder
scipy.optimize.curve-fit,
was aber scheinbar nur mit skalaren funktionen geht .. (komisch?..)
(Wenn ich es benutzen will bekomme ich die Fehlermeldung "Result from function call is not a proper array of floats." )

oder ich bilde die summe aus den quadraten der differenzen meiner Fit-Funktion und meiner daten und versuche das zu minimieren mit
scipy.optimize.minimize,
das läuft auch durch ohne fehlermeldungen aber findet leider kein minimum.
Kennt sich einer mit den zur verfügung stehenden Methoden aus und kann mir vielleicht tipps geben, wann man was benutzen sollte?

Meine zu findenden Parameter haben dabei keine boundary-conditions oder zwangsbedingungen.

Tut mir leid wenn das sehr vage ist, aber mir fällt auch kein weg ein mein Problem in einem vereinfachten Beispiel-Code zu zeigen.

Vielen Dank schon einmal :)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

was heißt denn "es wird kein Minimum" gefunden? Wie sieht die dazugehörige Fehlermeldung aus? Und bist du dir sicher, dass es tatsächlich ein erreichbares lokales Minimum gibt?

Es wäre vielleicht ganz hilfreich, wenn du ein minimales Lauffähiges Beispiel zeigen würdest, welches dein Problem reproduziert. Im Idealfall natürlich mit einer richtigen Funktionsschar. Das motiviert hier vielleicht etwas mehr zum ausprobieren.
Das Leben ist wie ein Tennisball.
janine
User
Beiträge: 4
Registriert: Dienstag 9. Juli 2013, 15:11

Hey,
Das mit dem lauffähigen Beispiel ist leider nicht möglich... Weil ich ja nicht weiß warum es nicht funktioniert, kann ich das Problem auch nicht repdroduzieren.
Ich hab schon Funktionenschare gefittet mithilfer einer zu minimierenden Funktion (Summe der quadrate der differenzen) und der Funktion scipy.optimize.minimize

Nur in diesem Fall lässt es mich im Stich.
Wenn ich sage es findet kein Minimum dann meine ich, dass je nach dem, welche Methode und welche Startwerte ich ihm gebe, er nach Durchlauf der Funktion entweder ausgibt "success: False"

oder, was mich sehr verwirrt, er behauptet er hätte ein Minimum gefunden ("success: True" ), aber an den von ihm angegebenen Parametern ist meine Funktion entweder "nan" oder,
noch viel geiler, die Funktion ist für die gefundenen Fitparameter einfach 100mal größer als für meine Startparameter... Tolles Minimum Python. Gut gemacht. Nimm dir nen keks..

Tut mir echt Leid wegen dem lauffähigen Beispiel,
Ich hoffe ein wenig darauf dass jmd das Problem kennt und mir von daher helfen kann,
da ich das verdammt Problem eben nicht einfach mal so reproduzieren kann, kann ich auch verstehen wenn man mir nicht helfen kann...

Danke auf jeden Fall, vllt fällt mir ja noch irgendwann ein lauffähiges Beispiel ein...
Antworten