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?
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 .
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.
Dies ist ein sehr naheliegendes Beispiel, weil die erste Zeile nur die doppelte der zweiten Zeile ist, aber hoffentlich bekommst du den Punkt.
Tags und Links python numpy linear-regression