Wie kann ich kategoriale Datentypen für die zufällige Waldklassifizierung anpassen?

10

Ich muss die Genauigkeit eines Trainingsdatensatzes durch Anwendung des Random Forest-Algorithmus ermitteln. Aber der Typ meines Datensatzes ist sowohl kategorisch als auch numerisch. Beim Versuch, diese Daten anzupassen, wird eine Fehlermeldung angezeigt.

'Eingabe enthält NaN, unendlich oder einen Wert, der für dtype zu groß ist (' float32 ')'.

Möglicherweise liegt das Problem bei Objektdatentypen. Wie kann ich kategoriale Daten anpassen, ohne sie für die Anwendung von RF zu transformieren?

Hier ist mein Code.

Bildschirmfoto

Bildschirmfoto

Bildschirmfoto

IS2057
quelle
Sie müssen one_hot nicht ausführen, wenn Sie ein Baummodell verwenden, da es nicht wie andere Methoden die Entfernung misst.
Jun Yang

Antworten:

9

Sie müssen die kategorialen Features in numerische Attribute konvertieren. Ein üblicher Ansatz ist die Verwendung einer One-Hot-Codierung, aber das ist definitiv nicht die einzige Option. Wenn Sie eine Variable mit einer hohen Anzahl von kategorialen Ebenen haben, sollten Sie in Betracht ziehen, Ebenen zu kombinieren oder den Hashing-Trick zu verwenden. Sklearn ist mit mehreren Ansätzen ausgestattet (siehe Abschnitt "Siehe auch"): Ein Hot Encoder und ein Hashing Trick

Wenn Sie sich nicht für sklearn engagieren, werden bei der Implementierung der zufälligen H2O- Gesamtstruktur kategoriale Funktionen direkt verarbeitet.

David Marx
quelle
0

Soweit ich weiß, gibt es einige Probleme, diese Art von Fehler zu bekommen. Erstens gibt es in meinen Datensätzen zusätzlichen Speicherplatz, weshalb Fehler angezeigt werden: 'Eingabe enthält NAN-Wert; Zweitens kann Python mit keinem Objektwert arbeiten. Wir müssen diesen Objektwert in einen numerischen Wert konvertieren. Für die Konvertierung von Objekten in numerische Objekte gibt es zwei Codierungsverfahren: Label Encoder und One Hot Encoder. Wo Label Encoder Objektwerte zwischen 0 und n_classes-1 und One Hot Encoder zwischen 0 und 1 codieren. In meiner Arbeit verwende ich Label Encoder zum Konvertieren von Werten und vor dem Konvertieren, bevor ich meine Daten für eine beliebige Klassifizierungsmethode anpasse In meinem Datensatz ist kein Leerzeichen vorhanden.

IS2057
quelle