wake-up-neo.net

Kann sklearn Random Forest direkt mit kategorialen Features umgehen?

Angenommen, ich habe ein kategorisches Merkmal, Farbe, das die Werte annimmt

['rot', 'blau', 'grün', 'orange'],

und ich möchte es verwenden, um etwas in einem zufälligen Wald vorherzusagen. Wie kann ich sklearn mitteilen, dass die vier Dummy-Variablen wirklich eine Variable sind, wenn ich sie mit einem Tastendruck codiere (d. H. In vier Dummy-Variablen ändere)? Insbesondere wenn sklearn zufällig Features zur Verwendung an verschiedenen Knoten auswählt, sollte es entweder die roten, blauen, grünen und orangefarbenen Dummies zusammen enthalten oder keines von ihnen enthalten.

Ich habe gehört, dass es keine Möglichkeit gibt, dies zu tun, aber ich würde mir vorstellen, dass es eine Möglichkeit geben muss, mit kategorialen Variablen umzugehen, ohne sie willkürlich als Zahlen oder ähnliches zu kodieren.

44
hahdawg

Nein, das gibt es nicht. Jemandes arbeitet daran und der Patch wird vielleicht eines Tages mit dem Mainline-Code zusammengeführt, aber im Moment gibt es keine Unterstützung für kategoriale Variablen in scikit-learn, außer für Dummy-Codierungen (One-Hot).

29
Fred Foo

Die meisten Implementierungen von Random Forest (und vielen anderen Algorithmen für maschinelles Lernen), die kategoriale Eingaben akzeptieren, automatisieren entweder nur die Codierung kategorialer Features für Sie oder verwenden eine Methode, die für eine große Anzahl von Kategorien rechnerisch nicht mehr umsetzbar .

Eine bemerkenswerte Ausnahme ist H2O . H2O verfügt über eine sehr effiziente Methode für die direkte Verarbeitung kategorialer Daten, wodurch es häufig eine Edge-over-Tree-Methode erhält, für die eine One-Hot-Codierung erforderlich ist.

Dieser Artikel von Will McGinnis hat eine sehr gute Diskussion über One-Hot-Encoding und Alternativen .

Dieser Artikel von Nick Dingwall und Chris Potts hat eine sehr gute Diskussion über kategoriale Variablen und baumbasierte Lerner .

11
denson

Sie müssen die kategoriale Variable in eine Reihe von Dummy-Variablen umwandeln. Ja, ich weiß, dass es ärgerlich ist und unnötig erscheint, aber so funktioniert sklearn. wenn Sie Pandas benutzen. benutze pd.get_dummies, es funktioniert wirklich gut.

9