Lineare Regression mit Python numpy

7

Ich versuche eine einfache lineare Regressionsfunktion zu machen, aber stoße weiterhin auf

  

numpy.linalg.linalg.LinAlgError: Singulärer Matrixfehler

Vorhandene Funktion (mit Debug-Ausdrucken):

%Vor%

Die Ausgabe an die Konsole mit meinen Testdaten ist:

%Vor%

Dann wird in der Zeile linalg.solve ein Fehler angezeigt. Dies ist eine lineare Regressionsfunktion des Lehrbuchs und ich kann nicht herausfinden, warum es scheitert.

Was ist der singuläre Matrixfehler?

    
Jonathan 13.10.2010, 03:25
quelle

2 Antworten

17

Wie in der anderen Antwort erklärt, erwartet linalg.solve eine vollständige Rangmatrix. Dies liegt daran, dass es versucht, eine Matrixgleichung zu lösen, anstatt eine lineare Regression durchzuführen, die für alle Ränge funktionieren sollte.

Es gibt einige Methoden für die lineare Regression. Die einfachste Methode, die ich vorschlagen würde, ist die Methode der kleinsten Quadrate. Verwenden Sie stattdessen numpy.linalg.lstsq . Die Dokumentation mit einem Beispiel ist hier .

    
Muhammad Alkarouri 13.10.2010, 07:44
quelle
8

Eine singuläre Matrix ist eine, für die die Determinante Null ist. Dies zeigt an, dass Ihre Matrix Zeilen hat, die nicht linear unabhängig sind. Wenn beispielsweise eine der Zeilen nicht linear unabhängig von den anderen ist, kann sie durch eine lineare Kombination der anderen Zeilen konstruiert werden. Ich werde numpys Beispiel linalg.solve verwenden, um dies zu demonstrieren. Hier ist das Beispiel des Dokuments:

%Vor%

Nun ändere ich a , um es einzigartig zu machen.

%Vor%

Dies ist ein sehr naheliegendes Beispiel, weil die erste Zeile nur die doppelte der zweiten Zeile ist, aber hoffentlich bekommst du den Punkt.

    
Justin Peel 13.10.2010 03:57
quelle

Tags und Links