Least-Squares-Regression von Matrizen mit Numpy
Wenn diese beantwortet wurde irgendwo konnte ich nicht finden, fühlen Sie sich frei, um forum Ohrfeige mich.
Ich bin auf der Suche um zu berechnen, least squares linear regression aus einer N mal M matrix und eine Reihe von bekannten, Boden-Wahrheit-Lösungen in einem N-1-matrix. Von dort, würde ich mag, um die Steigung, Achsenabschnitt und der Restwert bei jeder regression. Die grundlegende Idee, ich kenne den tatsächlichen Wert, soll vorhergesagt werden für jede Probe in eine Reihe von N, und ich möchte, um zu bestimmen, welcher Satz von vorhergesagten Werten in einer Spalte von M ist am präzisesten mit Hilfe der Residuen.
Ich nicht beschreiben Matrizen gut, also hier ist eine Zeichnung:
(N,M) matrix with predicted values for each row N
in each column of M...
##NOTE: Values of M and N are not actually 4 and 3, just examples
4 columns in "M"
[1, 1.1, 0.8, 1.3]
[2, 1.9, 2.2, 1.7] 3 rows in "N"
[3, 3.1, 2.8, 3.3]
(1,N) matrix with actual values of N
[1]
[2] Actual value of each sample N, in a single column
[3]
Also nochmal, um der Klarheit Willen, ich bin auf der Suche, um die Berechnung der lstsq regression zwischen jede Spalte der (N,M) - matrix und (1,N) - matrix.
Beispielsweise die regression zwischen
[1] and [1]
[2] [2]
[3] [3]
dann die regression zwischen
[1] and [1.1]
[2] [1.9]
[3] [3.1]
und so weiter, die Ausgabe der Steigung, Achsenabschnitt und der standard-Fehler (Durchschnittliche Restlaufzeit) für jede regression berechnet.
So weit in die numpy/scipy Dokumentation und um den 'net, ich habe nur festgestellt, Beispiele computing eine Spalte zu einem Zeitpunkt. Ich hatte gedacht, numpy hatte die Fähigkeit zum berechnen von Regressionen auf jede Spalte in eine Reihe mit den standard -
np.linalg.lstsq(arrayA,arrayB)
Aber, dass den Fehler zurück
ValueError: array dimensions must agree except for d_0
Muss ich teilen Sie die Spalten in Ihre eigenen arrays, dann berechnen Sie ein zu einer Zeit?
Gibt es einen parameter oder eine matrix-operation, die ich verwenden muss, um numpy Berechnung der Regressionen auf jede Spalte unabhängig?
Ich fühle mich wie es sollte einfacher sein? Ich sah es überall, und ich kann nicht scheinen, um herauszufinden jemand etwas ähnliches macht.
InformationsquelleAutor jelegans | 2012-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht schaltet Ihr Ein und b?
Folgendes funktioniert bei mir:
InformationsquelleAutor tillsten
Die 0. dimension arrayB muss die gleiche wie die 0. dimension von arrayA (ref: die offizielle Dokumentation von np.linalg.lstsq). Sie müssen Matrizen mit Dimensionen
(N, M) and (N, 1)
oder(N, M) and (N)
statt der(N,M) and (1,N)
Matrizen, die Sie derzeit verwenden.Beachten Sie, dass die
(N, 1)
undN
dimensionale Matrizen geben identische Ergebnisse-aber die Formen der Felder wird anders sein.Bekomme ich eine etwas andere Ausnahme von dir, aber das kann aufgrund der unterschiedlichen Versionen (ich verwende Python 2.7, Numpy 1.6 auf Windows):
InformationsquelleAutor Dhara