Least square-Methode in python?
Habe ich diese Werte:
T_values = (222, 284, 308.5, 333, 358, 411, 477, 518, 880, 1080, 1259) (x values)
C/(3Nk)_values = (0.1282, 0.2308, 0.2650, 0.3120 , 0.3547, 0.4530, 0.5556, 0.6154, 0.8932, 0.9103, 0.9316) (y values)
Ich weiß, dass Sie dem Modell Folgen:
C/(3Nk)=(h*w/(k*T))**2*(exp(h*w/(k*T)))/(exp(h*w/(k*T)-1))**2
Ich weiß auch, dass k=1.38*10**(-23)
und h=6.626*10**(-34)
.
Ich finde die w, die am besten beschreibt die Messdaten. Ich möchte lösen diese mit Hilfe der kleinste-Quadrate-Methode in python, aber ich weiß nicht wirklich verstehen, wie das funktioniert. Kann mir jemand helfen?
Fehlt ein negatives Vorzeichen in Ihre Gleichung für C/(3Nk)?
InformationsquelleAutor Philipp | 2017-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Antwort bietet ein walk-through auf die Verwendung von Python um zu bestimmen, passende Parameter für einen Allgemeinen exponentiellen Muster.
Daten Reinigung
First, let ' s input und organisieren Sie die sampling-Daten als numpy-arrays, die später helfen, mit Berechnung und Klarheit.
Gibt es viele curve fitting Funktionen scipy und numpy und jeder wird unterschiedlich verwendet, z.B.
scipy.optimieren.leastsq
undscipy.optimieren.least_squares
. Für Einfachheit, verwenden wirscipy.optimieren.curve_fit
, aber es ist schwer zu finden, einen optimierten Regressionsgeraden ohne Auswahl angemessener Start Parameter. Eine einfache Technik wird später gezeigt werden, auf die Auswahl von Start-Parameter.Abgeben
Erste, obwohl die OP, sofern eine voraussichtlich passende Gleichung, wenden wir uns dem problem der Python-Kurve passen, überprüfen Sie die Allgemeine Gleichung für eine exponentielle Funktion:
Nun bauen wir diese Allgemeine Funktion, die verwendet werden ein paar mal:
Trends:
A
gibt eine kleinere amplitudeA
kippt die Kurve über einer horizontalen Ebenec
steuert die Form von einer Abflachung der "Knie" der Kennliniec
kippt die Kurve über eine vertikale Ebened
setzt den y-AchsenabschnittAuswahl Anfängliche Parameter
Diese trends, lassen Sie uns zuerst die Daten anschauen und versuchen zu emulieren, die Kurve durch eine Anpassung dieser Parameter. Für die demonstration werden wir zeigen mehrere Studien:
Vom einfachen Versuch und Irrtum, können wir annähernd die Form, Ausrichtung, amplitude und Anfangspunkt der Kurve besser. Zum Beispiel wissen wir die ersten beiden Parameter (
A
undc
) muss negativ sein. Wir haben auch eine vernünftige Annahme für die Größenordnung fürc
.Computing Geschätzten Parameter
Wir nun den Parameter der besten Prüfung für unsere anfänglichen Vermutungen:
Wie Funktioniert das?
curve_fit
ist eine von vielen Optimierung Funktionen angeboten von scipy. Ein initialer Wert übergeben, der resultierende geschätzte Parameter werden iterativ verfeinert, so dass die resultierende Kurve minimiert die restfehler, oder Unterschied zwischen der eingebauten line-und sampling-Daten. Eine bessere Schätzung reduziert die Anzahl der Iterationen und beschleunigt das Ergebnis. Mit diesen geschätzten Parametern für die angepasste Kurve kann man nun berechnen Sie die spezifische Koeffizienten für einen bestimmten Gleichung (eine Letzte übung Links nach der OP).InformationsquelleAutor pylang
den Sie verwenden möchten scipy
C:\Users\philh\Anaconda3\lib\site-packages\scipy\optimize\minpack.py:715: OptimizeWarning: Covariance of the parameters could not be estimated category=OptimizeWarning)
Irgendwelche Vorschläge?das ist kein Fehler, das ist eine Warnung.
InformationsquelleAutor Mohammad Athar