Ich trainiere einen LDA-Klassifikator für mehrere Klassen mit 8 Datenklassen.
Während des Trainings bekomme ich eine Warnung von: " Variablen sind kollinear "
Ich erhalte eine Trainingsgenauigkeit von über 90% .
Ich verwende eine Scikits-Lernbibliothek in Python , um die Daten für mehrere Klassen zu trainieren und zu testen.
Ich bekomme auch eine ordentliche Testgenauigkeit (ca. 85% -95% ).
Ich verstehe nicht, was der Fehler / die Warnung bedeutet. Bitte hilf mir.
Da ich denke, dass gui11aume Ihnen eine großartige Antwort gegeben hat, möchte ich ein Beispiel aus einem etwas anderen Blickwinkel geben, das vielleicht aufschlussreich ist. Bedenken Sie, dass eine Kovariate in Ihrer Diskriminanzfunktion wie folgt aussieht:
Angenommen, die beste LDA hat die folgende lineare Grenze:
oder
Die Koeffizienten sind also sehr unterschiedlich, aber die beiden Gleichungen ergeben die gleiche Grenze und die gleiche Vorhersageregel. Wenn eine Form gut ist, ist es auch die andere. Aber jetzt können Sie sehen, warum gui11ame sagt, dass die Koeffizienten nicht interpretierbar sind.
quelle
Obwohl die hier markierte Antwort korrekt ist, haben Sie nach einer anderen Erklärung gesucht, um herauszufinden, was in Ihrem Code passiert ist. Ich hatte genau das gleiche Problem beim Durchlaufen eines Modells.
Folgendes ist los: Sie trainieren Ihr Modell mit der vorhergesagten Variablen als Teil Ihres Datensatzes. Hier ist ein Beispiel von dem, was mir einfiel, ohne es überhaupt zu bemerken:
In diesem Code möchte ich den Wert von 'COL3' vorhersagen ... aber wenn Sie sich train_X ansehen, sage ich, dass jede Spalte außer der letzten abgerufen werden soll, sodass COL1 COL2 und COL3 eingegeben werden und nicht COL4. und versuchen, COL3 vorherzusagen, das Teil von train_X ist.
Ich habe dies korrigiert, indem ich nur die Spalten verschoben habe, COL3 manuell in Excel als letzte Spalte in meinem Datensatz verschoben habe (jetzt statt COL4) und dann:
Wenn Sie es nicht in Excel verschieben möchten und es einfach per Code ausführen möchten, gehen Sie wie folgt vor:
Beachten Sie nun, wie ich train_X deklariert habe, um alle Spalten mit Ausnahme von COL3 einzuschließen, das Teil von train_Y ist.
Ich hoffe das hilft.
quelle