Hi
Kann ich in Python eine lineare Regression über mehrere Messwerte berechnen lassen oder muss ich das selber programmieren?
Hi
Kann ich in Python eine lineare Regression über mehrere Messwerte berechnen lassen oder muss ich das selber programmieren?
Hallo swuf,
Kann ich in Python eine lineare Regression über mehrere
Messwerte berechnen lassen oder muss ich das selber
programmieren?
Na, ein Python-Programm musst Du schon schreiben Aber im Modul numpy gibt es die Methode der kleinsten Quadrate als Funktion (linear_least_squares)
http://www.scipy.org/doc/numpy_old_api_docs/numpy.li…
und aus dem gleichen Modul polyfit() und polyval()
http://www.scipy.org/Numpy_Example_List_With_Doc
http://www.scipy.org/Cookbook/LinearRegression
Wenn Du es etwas „händischer“ bevorzugst, kannst Du dich ja an dieses Beispiel halten:
http://www.answermysearches.com/how-to-do-a-simple-l…
Viele Grüße
Marvin
Hi Marvin,
Super Danke,
kann ich die auch nehmen, wenn ich 5 Werte und 1 Ausgangswert habe?
Bsp:
x = [
[1,2,3,4,5],
[4,2,6,8,6],
…
]
y = [
[3],
[6],
…
]
Hallo swuf,
kann ich die auch nehmen, wenn ich 5 Werte und 1 Ausgangswert
habe?
Ooch nee, keine Ahnung, probiere es einfach aus. Mehr als das dir der PC explodiert kann auch nicht passieren
Im Ernst, ich weiss es wirklich nicht. Es ist 40 Jahre her, daß ich mal was mit linearer Regression zu tun hatte. Da bin ich schon ganz froh, daß mir wenigstens der Herr Gauß und seine kleinsten Quadrate eingefallen sind. Aber praktisch ausgerechnet (mit Python oder oder was anderem) habe ich da lange nichts mehr.
Auf jeden Fall muss die erste Dimension beider Matrizen übereinstimmen. Also, Du hast zwei Matrizen, x und y. x hat die Dimension n*k, dann sollte y die Dimension n*1 haben (bei 1xn musst Du transponieren). Ich hoffe, die Mathematiker steinigen mich nicht
Oder praktisch:
Wenn x so aussieht ( 3 x2)
x=Matrix([[1, 1], [1, 2], [1, 3]])
dann sollte y die Dimension 3 x1 haben
y=Matrix([[1], [2], [4]])
dann kannst Du getrost in Python das ausrechnen lassen:
print linear\_least\_squares(x, y)
Aber wie gesagt, probiere es aus. Du hast bestimmt Aufgaben, bei denen bekannt ist, was rauskommen soll, so daß Du es kontrollieren kannst.
Gibt es konkrete Probleme, ja dann spornt mich das vielleicht an, doch noch Python vorzukramen und die Sache nachzuvollziehen, aber im Moment ziehe ich es vor, mich meiner verdienten Sonntags-Ruhe hinzugeben
Viele Grüße
Marvin
Korrektur oder so was
Hallo swuf,
habe nun doch etwas experimentiert und dabei festgestellt, daß in meinem numpy die Funktion linear_least_squares einen kürzeren Namen hat. Bei mir heisst sie lstsq. Und in meinem vorigen Beispiel muss natürlich statt M atrix m atrix stehen. Hier also nochmal das ganze in korrekt:
import numpy as np
x=np.matrix([[1, 1], [1, 2], [1, 3]])
y=np.matrix([[1], [2], [4]])
print np.linalg.lstsq(x, y)
das gibt dann
(matrix([[-0.66666667],
[1.5]]), matrix([[0.16666667]]), 2, array([4.07914333, 0.60049122]))
Viele Grüße
Marvin
hey das geht ja
Super Danke.
…
Mist einen kleinen Hacken hat das dann doch noch.
Kann ich irgendwo den Grad der Regressionsfunktion ändern?
PS:
Gibt es eigentlich auch eine umgekehrte Funktion?
Bei der ich die berechneten Werte eingebe + neue Werte und diese mir den Funktionswert ausgibt?
Re^2: Korrektur oder so was
Hallo swuf,
Kann ich irgendwo den Grad der Regressionsfunktion ändern?
Meinst Du mit „Grad ändern“ z.B. statt linearer Regression quadratische Regression?
Gibt es eigentlich auch eine umgekehrte Funktion?
Bei der ich die berechneten Werte eingebe + neue Werte und
diese mir den Funktionswert ausgibt?
Würde das Sinn machen?
Aber ich stosse an meine mathematischen Grenzen. Keine Ahnung. Zumindest die letzte Frage solltest Du vielleicht mal im Mathe-Brett stellen.
Was nichtlineare Regression betrifft (wenn ich dich richtig verstanden habe), so solltest Du dir vielleicht mal R ansehen, eine Programmiersprache für statistisches Rechnen und statistische Grafiken.
http://de.wikipedia.org/wiki/R_(Programmiersprache)
http://www.r-project.org/
Dafür gibt es auch eine Python-Schnittstelle, RPy
http://rpy.sourceforge.net/
Aber da musst Du dich dann allein durchkämpfen, oder einen Experten dafür suchen, ab dem Punkt kann ich dir wirklich nicht mehr helfen.
Viele Grüße
Marvin
Hallo Marvin,
Nee Nee, keine nicht lineare Regression, dass ist mir dann auch zu hoch.
Nur einfache lineare Regression, quadratische, …
also x^1, x^2, x^…
Mit der umgekehrten funktion meine ich, dass ich Voraussagen machen möchte, wenn x1, x2, … diesen Wert haben ist y so und so.
Die Funktion von dir gibt mir doch die Koeefizienten(w) der Regressionsgleichung
y = w0 + w1x1 + w2x2+ …
dass kann ich natürlich auch selbst programmieren, doch viele Module von Python sind in C umgesetzt und daher viel schneller als meine eigenen Codes in Python.
Daher meine Frage nach einer „Umkehrfunktion“.
Viele Grüße
Noob77
Hallo swuf,
Nur einfache lineare Regression, quadratische, …
also x^1, x^2, x^…
bei der quadratischen, kubischen usw. Regression wird oft gesagt, man solle sie durch entsprechendes Wurzelziehen auf eine lineare Regression zurückführen. Andere behaupten wiederum, dies sei nicht korrekt. Als Nicht-Mathematiker kann ich das leider nicht entscheiden, deshalb nochmal der Hinweis, frage vielleicht mal hier im Matheforum nach, da sitzen die wahren Spezialisten.
Mit der umgekehrten funktion meine ich, dass ich Voraussagen
machen möchte, wenn x1, x2, … diesen Wert haben ist y so und
so.
Verstehe, aber auch hier nochmals: Ich könnte auch nur die Python-Bibliotheken alle durchsehen, ob es da was gibt. So einfach aus der hohlen Hand heraus weiss ich das leider auch nicht, tut mir leid.
Viele Grüße
Marvin
Hi Marvin,
ich schau einfach selber mal nach in den Bibliotheken.
Zumindest weiß ich jetzt schon mal wo ich gucken kann.
Vielen Dank für deine Hilfe.
Viele Grüße
Noob77