Hi
Numpy beherscht doch die lineare Regression.
Kann ich da auch mehr dimensionale Regression laufen lassen, mit 10 oder mehr Vektoren?
Falls ja, kann mir einer dafür zur Erklärung ein Beispiel(code) geben?
lineare Regression in Numpy
Meinst Du dies hier?
Ansonsten: Was bitte ist multidimensionale, lineare Regression? Meinst Du logistische Regression? Multivariate Regression?
Und was ist ein "Vektor" in diesem Kontext? numpy.array? numpy.ndarray?
HTH
Christian
edit: PS: Was ist überhaupt die Fragestellung?
Ansonsten: Was bitte ist multidimensionale, lineare Regression? Meinst Du logistische Regression? Multivariate Regression?
Und was ist ein "Vektor" in diesem Kontext? numpy.array? numpy.ndarray?
HTH
Christian
edit: PS: Was ist überhaupt die Fragestellung?
Ein Basisvektor ist die Basis eines Vektorraumes, mit deren Hilfe sich jeder Vektor des Raumes eindeutig als endliche Linearkombination darstellen lässt.
Ein Vektor ist in diesem Zusammenhang ein vielfaches dieser Basisvektoren.
Bsp. ist ein 2D oder 3D Koordinatensystem.
Bei mir sind es aber mehr als 10 Vektoren, also ein Koordinatensystem mit mehr als 10 Achsen.
Ich habe zusätzlich mehrere Datensätze und bin nun auf der Suche nach einer linearen Funktion, welche diese Daten mit einander verbindet.
Mit der Numpy Funktion Poly() kann man wohl eine solche Funktion ermitteln, doch habe ich es nicht ganz verstanden.
Daher meine Bitte um ein Beispiel zur Erklärung, bei mehr als nur 2 Vektoren.
Ein Vektor ist in diesem Zusammenhang ein vielfaches dieser Basisvektoren.
Bsp. ist ein 2D oder 3D Koordinatensystem.
Bei mir sind es aber mehr als 10 Vektoren, also ein Koordinatensystem mit mehr als 10 Achsen.
Ich habe zusätzlich mehrere Datensätze und bin nun auf der Suche nach einer linearen Funktion, welche diese Daten mit einander verbindet.
Mit der Numpy Funktion Poly() kann man wohl eine solche Funktion ermitteln, doch habe ich es nicht ganz verstanden.
Daher meine Bitte um ein Beispiel zur Erklärung, bei mehr als nur 2 Vektoren.
Tut mir leid, aber Du bist mir noch zu unverständlich. Ich *weiß* was in versch. math./phys. Kontexten unter 'Vektor' verstanden wird. Aber meine Frage bezog sich auf die Art des array-Objektes (da Python keinen 'Vektor' kennt) - zumindest unterstelle ich mal, daß Du eine Art von numpy array hast. Z. B. ein >10-dimensionales numpy.ndarray. Habe ich das richtig verstanden?
Sorry, aber an der Stelle steige ich aus. Wenn Du Deinen hochdimensionalen Raum einfacher parametrisieren kannst, gibt es vielleicht eine implementierte Pythonlösung - aber ansonsten wäre das vielleicht etwas für eine Arbeitsgruppe, die sich mit Deinem Feld auskennt, oder?
Oder versteht jemand smith0815 besser? (Was numpy.poly mit dem Problem zu tun haben könnte, habe ich auch nicht verstanden, schließlich erwartet diese Funktion gegebene Nullstellen.)
Sorry, aber an der Stelle steige ich aus. Wenn Du Deinen hochdimensionalen Raum einfacher parametrisieren kannst, gibt es vielleicht eine implementierte Pythonlösung - aber ansonsten wäre das vielleicht etwas für eine Arbeitsgruppe, die sich mit Deinem Feld auskennt, oder?
Oder versteht jemand smith0815 besser? (Was numpy.poly mit dem Problem zu tun haben könnte, habe ich auch nicht verstanden, schließlich erwartet diese Funktion gegebene Nullstellen.)
Ok, eine Frage hätte ich noch: Wie misst man >10-dimensionale Daten? Oder sind Deine Daten doch intrinsisch <= 4D?
Nicht den blassesten. Wenn man „10 Vektoren“[1] hat, was ich mal – auf Grund der erfolgten Erklärung – als Umschreibung für einen 10-dimensionalen Parameterraum interpretiere, müsste da doch irgendwas hiervon reichen: http://docs.scipy.org/doc/scipy/reference/optimize.htmlCM hat geschrieben:Oder versteht jemand smith0815 besser? (Was numpy.poly mit dem Problem zu tun haben könnte, habe ich auch nicht verstanden, schließlich erwartet diese Funktion gegebene Nullstellen.)
[1] @smith0815 du meintest da jetzt schon Basisvektoren oder? Du benutzt den Begriff manchmal synonym zu Vektor was es sehr schwer macht dich zu verstehen.
vielleicht klappt es mit einem vereinfachten Beispeil
Ich habe ein Koordinatensystem mit einer X- und einer Y-Achse
gegeben sind die Punkte
P1(3,3); P2(4,4); P3(6.5, 6.5) ...
Gesucht ist eine Funktion die diese Punkte beschreibt
Ergebnis
f(x) = x
(eine Lösung könnte natürlich auch höheren Grades sein)
Ziel ist es mit dieser Funktion Punkte zu ermitteln, bei dem ich nur einen Teil z.B. x=2
Ergebnis wäre y=2
Zurück auf mein Problem: Suche ich eine Möglichkeit, welche mir eine Funktion liefert, bei dem die einzelnen Punkte über 10 (und nicht nur 2) Werte haben.
@Darii das mit Scipy schau ich mir gleich an
Ich habe ein Koordinatensystem mit einer X- und einer Y-Achse
gegeben sind die Punkte
P1(3,3); P2(4,4); P3(6.5, 6.5) ...
Gesucht ist eine Funktion die diese Punkte beschreibt
Ergebnis
f(x) = x
(eine Lösung könnte natürlich auch höheren Grades sein)
Ziel ist es mit dieser Funktion Punkte zu ermitteln, bei dem ich nur einen Teil z.B. x=2
Ergebnis wäre y=2
Zurück auf mein Problem: Suche ich eine Möglichkeit, welche mir eine Funktion liefert, bei dem die einzelnen Punkte über 10 (und nicht nur 2) Werte haben.
@Darii das mit Scipy schau ich mir gleich an
Seufz, magst Du uns vielleicht etwas mehr über das Problem erzählen? Vielleicht kommen wir schneller zum Ziel, wenn wir wissen, was dahinter steckt. Ich hab' da 'nen leisen Verdacht ...
Jedenfalls: Wenn Du wirklich nur eine unabhängige gegenüber >10 abhängigen Variablen hast ist Dein Problem wahrscheinlich nicht lösbar.
Jedenfalls: Wenn Du wirklich nur eine unabhängige gegenüber >10 abhängigen Variablen hast ist Dein Problem wahrscheinlich nicht lösbar.
Bilder sagen mehr als 1.000.000 Worte.
http://www.fotos-hochladen.net/view/grapho6a4wxibvk.png
gegeben sind die Punkte.
gesucht die Funktion
Ich suche ein Tool (Numpy/Scipy Funktion) welche mir diese Funktion zurück gibt, egal ob es ein 2D, 3D, 4D, usw. Koordinatensystem ist.
http://www.fotos-hochladen.net/view/grapho6a4wxibvk.png
gegeben sind die Punkte.
gesucht die Funktion
Ich suche ein Tool (Numpy/Scipy Funktion) welche mir diese Funktion zurück gibt, egal ob es ein 2D, 3D, 4D, usw. Koordinatensystem ist.
In dem Fall nicht. Um es noch mal deutlich zu sagen: Du beschreibst ein Problem in einer Weise, die impliziert, daß es nicht (trivial) lösbar ist. (Und bei der Du wirklich nicht erwarten kannst, daß es eine allgemeine, bereits implementierte Lösung gibt.) Aber andererseits klingt es so verworren, daß evtl. doch eine Lösung da ist.smith0815 hat geschrieben:Bilder sagen mehr als 1.000.000 Worte.
Also: Was ist das zugrundliegende physische Phänomen? Was hast Du (oder jemand anderes) da gemessen?
Also mal ganz naive gedacht.
Du möchtest eine lineare Regression für deine Daten.
Du suchst also eine Funktion der Form:
f(x) = m * x + b = y
wobei b und y je ein 10D-Vektor ist.
Was ich nun als erstes fragen würde ist:
Ist x bei dir ein Skalar oder aber ein 10D-Vektor?
Oder meinst du linear in jeder Komponente?
Du schreibst z.B: bei deinem 2D Bsp das eine Komponente linear von der anderen Abhängt und du dies mit mehreren haben möchtest.
Also du hast einen 10D-Vektor, aber eine lineare Abbildung von 1D->9D?
Ohne das Problem näher zu verstehen wird dir keiner eine Antwort geben können.
Für die Fälle die ich jetzt aber gerade aufgezählt habe kannst du doch eine lineare Funktion basteln und die dann ganz normal fitten oder?
Musst halt immer eine der Variablen verändern, die anderen Konstant halten, so wie das jedes Mehrdimensionale fitting Programm macht.
Du möchtest eine lineare Regression für deine Daten.
Du suchst also eine Funktion der Form:
f(x) = m * x + b = y
wobei b und y je ein 10D-Vektor ist.
Was ich nun als erstes fragen würde ist:
Ist x bei dir ein Skalar oder aber ein 10D-Vektor?
Oder meinst du linear in jeder Komponente?
Du schreibst z.B: bei deinem 2D Bsp das eine Komponente linear von der anderen Abhängt und du dies mit mehreren haben möchtest.
Also du hast einen 10D-Vektor, aber eine lineare Abbildung von 1D->9D?
Ohne das Problem näher zu verstehen wird dir keiner eine Antwort geben können.
Für die Fälle die ich jetzt aber gerade aufgezählt habe kannst du doch eine lineare Funktion basteln und die dann ganz normal fitten oder?
Musst halt immer eine der Variablen verändern, die anderen Konstant halten, so wie das jedes Mehrdimensionale fitting Programm macht.
mein Datensatz beinhaltet mehrere Messwerte (10 Stück)
durch ein anderes Messinstrument, welches teuer gemietet werden muss, wurde ein weiterer Wert gemessen.
mit diesen 11 Werten möchte ich nun eine Regressionskurve erzeugen, welche es erlaubt,
den 11 Wert anhand dieser Kurve zu berechnen.
Ich möchte also aus einer Punktewolke eine Regressionsfunktion ermitteln, mit der ich weiter arbeiten möchte,
d.h. ich habe 10 unabhänginge Variablen und 1 abhängige.
PS: eine Abhängigkeit zwischen den 10 und der einen besteht, denn man kann sie auch (leider mit einem großen Fehlerbereich)
errechnen, ich versuche also Wege zu finden diesen Fehler und somit das benötigte Geld zu reduzieren
durch ein anderes Messinstrument, welches teuer gemietet werden muss, wurde ein weiterer Wert gemessen.
mit diesen 11 Werten möchte ich nun eine Regressionskurve erzeugen, welche es erlaubt,
den 11 Wert anhand dieser Kurve zu berechnen.
Ich möchte also aus einer Punktewolke eine Regressionsfunktion ermitteln, mit der ich weiter arbeiten möchte,
d.h. ich habe 10 unabhänginge Variablen und 1 abhängige.
PS: eine Abhängigkeit zwischen den 10 und der einen besteht, denn man kann sie auch (leider mit einem großen Fehlerbereich)
errechnen, ich versuche also Wege zu finden diesen Fehler und somit das benötigte Geld zu reduzieren
Ich habe jetzt drei Mal gefragt und Du hast dreimal drumrumgeredet. Es interessiert nicht, wie teuer die Messung war (und wenn Du am LHC gemessen hast und damit Milliarden auf dem Spiel stehen). Es innteressiert die Dimensionalität der Daten (mal >=10, aber möglicherweise nur wirr ausgedrückt, vielleicht auch nur mulitparametrisch/-variat), die Natur des angestrebten Fits (mal linear, mal unbestimmt), die Art des angestrebten Ergebnisses (ja, gut mal Interpolation, mal Extrapolation - aber das ist wohl eher der einfache Teil).
Und im letzten Post sagst Du, Du kennst die Natur der Abhängigkeit Deiner Daten, denn Du kannst sie errechnen? Gibt es also überhaupt noch ein Regressionsproblem?
Also, was ich einen Studenten in der Situation fragen würde ist: Was ist das für ein Instrument (nein, nicht welche Marke), was ist das Messignal (etwas spezifischer als im ersten Semester), was ist/sind die unabhängige(n), was die abhängige(n) Variable(n), wie und womit wurde die Messung durchgeführt, Ansatz und Fragestellung des Experiments?
Natürlich sollst Du hier nicht die Hosen runterlassen und Deine teure Forschung preisgeben, aber etwas spezifischer als bisher mußt Du schon sein, wenn Du nicht in präzisen Termini sagen kannst, was Du brauchst. Und wenn Du nicht die Möglichkeit siehst, die Dinge zu sagen, die es braucht Dir zu helfen, wende Dich vielleicht mal an eine statistische Beratung (so ziemlich jede Uni hat eine).
HTH
Christian
edit: PS So, wie Du das im letzten Post schriebst, wäre es wieder eher der triviale Fall.
Und im letzten Post sagst Du, Du kennst die Natur der Abhängigkeit Deiner Daten, denn Du kannst sie errechnen? Gibt es also überhaupt noch ein Regressionsproblem?

Also, was ich einen Studenten in der Situation fragen würde ist: Was ist das für ein Instrument (nein, nicht welche Marke), was ist das Messignal (etwas spezifischer als im ersten Semester), was ist/sind die unabhängige(n), was die abhängige(n) Variable(n), wie und womit wurde die Messung durchgeführt, Ansatz und Fragestellung des Experiments?
Natürlich sollst Du hier nicht die Hosen runterlassen und Deine teure Forschung preisgeben, aber etwas spezifischer als bisher mußt Du schon sein, wenn Du nicht in präzisen Termini sagen kannst, was Du brauchst. Und wenn Du nicht die Möglichkeit siehst, die Dinge zu sagen, die es braucht Dir zu helfen, wende Dich vielleicht mal an eine statistische Beratung (so ziemlich jede Uni hat eine).
HTH
Christian
edit: PS So, wie Du das im letzten Post schriebst, wäre es wieder eher der triviale Fall.
Ja manchmal stehe ich auf der Leitung.Ich habe jetzt drei Mal gefragt und Du hast dreimal drumrumgeredet. Es interessiert nicht, wie teuer die Messung war (und wenn Du am LHC gemessen hast und damit Milliarden auf dem Spiel stehen). Es innteressiert die Dimensionalität der Daten (mal >=10, aber möglicherweise nur wirr ausgedrückt, vielleicht auch nur mulitparametrisch/-variat), die Natur des angestrebten Fits (mal linear, mal unbestimmt), die Art des angestrebten Ergebnisses (ja, gut mal Interpolation, mal Extrapolation - aber das ist wohl eher der einfache Teil).
Die Anzahl der einzelnen Messwerte wird erst zu Beginn der Auswertung festgelegt.
Ab der Festlegung ist die Anzahl der Messwerte in jedem Punkt gleich groß (Als Beispiel 10 Werte)
Jeder Wert ist eindimensional (z.B. 14,738589; 250,678473 oder 73,85631).
Ich habe ein Trainingsdatensatz, mit dem ich eine Regressionskurve bestimmen möchte.
Welchen Grad diese Kurve hat soll auch zu Beginn festgelegt werden.
Dieser Trainingsdatensatz enthält sowohl die selbst gemessenen Werte als auch die vom Mietgerät gemessenen Werte.
Das Problem an der Natur ist, dass ich Sachen mit einem gringen Fehler (Fehlergrad des Gerätes) messen kann. Wenn ich jetzt aber Sachen berechne steigt dieser Fehler sehr stark. Daher versuche ich über andere Wege ein besseres Ergebnis zu erziehlen.Und im letzten Post sagst Du, Du kennst die Natur der Abhängigkeit Deiner Daten, denn Du kannst sie errechnen? Gibt es also überhaupt noch ein Regressionsproblem?
Ich nahm eigentlich an, dass dei Frage nicht so schwierig sei, denn:
Ich habe eine Punktewolke mit etwas 600.000 Punkten.
Jeder Punkt besteht aus immer der gleichen Menge an Werten.
Wenn ich zu Beginn 10 Werte festlege, hat jeder Punkt 10 Werte.
Die Frage ist nun:
Wie lautet die (beste Schätzung) Regressionsfunktion (z.B. 3. Grades).
Wenn das doch nicht so einfach ist, werde ich mir dann doch eine Uni-Beratung suchen.
Jetzt sagst Du zwar immer noch nicht, wo der Hase im Pfeffer ist, aber ich will mal raten:
Schau mal unter numpy.polynomial.Polyfit.fit(): Die Funktion kann ein beliebiges Polynom fitten. Der Vorteil dieser Funktion: Sie akzeptiert Gewichte. Du könntest - ob das zulässig ist, solltest Du selber wissen - Deine Werte mitteln und den reziproken Standardfehler (oder ein Vielfaches) als Gewicht für den Fit nutzen.
Von Interesse ist vielleicht auch ein älterer Thread von mir: http://www.python-forum.de/viewtopic.php?f=11&t=8363 (inzwischen veraltet, aber es gibt Dir vielleicht einen Eindruck wie man sonst herangehen könnte.)
Wenn Du dann die Koeffizienten kennst, ist die Evaluation ganz einfach. Aber das überlasse ich erstmal Dir zum üben
Ist es das was Du brauchst? Falls nicht, werde ich nicht ohne Kenntnis des physikalischen Hintergrundes weiter antworten - denn den kennen wir immer noch nicht. Und ohne Wissen über die Natur der Daten kann man wirklich schlecht entscheiden, wie die beste Herangehensweise ist.
Gruß,
Christian
Heißt das, es handelt sich um eine 10-fach-Bestimmung eines Wertes? Dann wäre das schon mal viel, viel einfacher! (edit: Und nicht 10D.)smith0815 hat geschrieben:Wenn ich zu Beginn 10 Werte festlege, hat jeder Punkt 10 Werte.
Schau mal unter numpy.polynomial.Polyfit.fit(): Die Funktion kann ein beliebiges Polynom fitten. Der Vorteil dieser Funktion: Sie akzeptiert Gewichte. Du könntest - ob das zulässig ist, solltest Du selber wissen - Deine Werte mitteln und den reziproken Standardfehler (oder ein Vielfaches) als Gewicht für den Fit nutzen.
Von Interesse ist vielleicht auch ein älterer Thread von mir: http://www.python-forum.de/viewtopic.php?f=11&t=8363 (inzwischen veraltet, aber es gibt Dir vielleicht einen Eindruck wie man sonst herangehen könnte.)
Wenn Du dann die Koeffizienten kennst, ist die Evaluation ganz einfach. Aber das überlasse ich erstmal Dir zum üben

Ist es das was Du brauchst? Falls nicht, werde ich nicht ohne Kenntnis des physikalischen Hintergrundes weiter antworten - denn den kennen wir immer noch nicht. Und ohne Wissen über die Natur der Daten kann man wirklich schlecht entscheiden, wie die beste Herangehensweise ist.
Gruß,
Christian
Es gibt keine universelle „beste“ Schätzfunktion. Die hängt immer vom Problem ab und ich verstehe dein Problem immer noch nicht, das ist alles zu wage was du so erzählst.smith0815 hat geschrieben:Wie lautet die (beste Schätzung) Regressionsfunktion (z.B. 3. Grades).
Tu das.Wenn das doch nicht so einfach ist, werde ich mir dann doch eine Uni-Beratung suchen.
Doch. Nur ist unsere Forumskristallkugel kaputt, so dass wir nicht sehen können, was genau Dein Problem ist. Und da Du nicht in der Lage bist (oder willens bist) es zu beschreiben oder Bezug auf bereits gepostete Vorschläge und Fragen zu nehmen, können wir nicht helfen.
Ich hab jetzt mal nachgelesen.
die einfachste Funktion lautet:
y=w1x + w0
wobei x die genannten 10 Messwerte, y der eine Sollausgabewert und w1 bzw. w0 die gesuchten Parameterwerte sind.
Gibt es also eine Numpy oder Scipy-Funktion, bei der ich x,y und den Grad der Funktion angebe und (in diesem einfachen Fall)
w1 und w0 als Ausgabewert erhalte?
die einfachste Funktion lautet:
y=w1x + w0
wobei x die genannten 10 Messwerte, y der eine Sollausgabewert und w1 bzw. w0 die gesuchten Parameterwerte sind.
Gibt es also eine Numpy oder Scipy-Funktion, bei der ich x,y und den Grad der Funktion angebe und (in diesem einfachen Fall)
w1 und w0 als Ausgabewert erhalte?