2014-07-12 8 views
32

Say mam kategoryczny funkcji, kolor, który przyjmuje wartościCzy można przeżyć losowy las bezpośrednio obsługiwać cechy kategoryczne?

[ „czerwony”, „niebieski”, „zielony”, „pomarańczowy”]

i chcę go używać do przewidzenia coś w przypadkowym lesie. Jeśli je zaszyfruję (tzn. Zmienię na cztery fałszywe zmienne), jak mogę powiedzieć sklearn, że cztery zmienne fałszywe są naprawdę jedną zmienną? W szczególności, gdy sklearn wybiera losowo elementy do wykorzystania w różnych węzłach, powinno zawierać albo czerwone, niebieskie, zielone i pomarańczowe manekiny, albo nie powinno zawierać żadnego z nich.

Słyszałem, że nie ma sposobu, aby to zrobić, ale wyobrażam sobie, że musi istnieć sposób radzenia sobie ze zmiennymi kategorycznymi bez arbitralnego kodowania ich jako liczb lub czegoś w tym stylu.

+0

To była bardzo przydatna i bardzo długotrwała prośba o ulepszenie na sklearn od 2014 roku. Jednym z rozważań było to, czy powinny one nadać priorytet wdrażaniu nowej [pandy kategorialnej] (http://pandas.pydata.org/pandas-docs/stable) /categorical.html) lub generic numpy. – smci

Odpowiedz

23

Nie, nie ma. Ktoś jest working on this, a łata może zostać połączona w mainline pewnego dnia, ale teraz nie ma wsparcia dla zmiennych jakościowych w nauce scikit z wyjątkiem kodowania manekinowego (jeden gorący).

+0

Dziesięć kciuków, jeśli to w końcu zostanie wprowadzone w życie. Osobiście priorytetowo traktowałem kategorię pandy kategoryczną nad prostą, ale podstawowi opiekunowie chcą inaczej. – smci

6

Musisz uczynić zmienną kategorialną serią fałszywych zmiennych. Tak, wiem, że to denerwujące i wydaje się niepotrzebne, ale tak działa sklearn. jeśli używasz pand. użyj pd.get_dummies, działa bardzo dobrze.

+3

Działa to naprawdę dobrze, jeśli te same unikalne wartości są obecne w treningu i wnioskach, dlatego nie jest wiarygodne. – marbel

5

Większość implementacji losowego lasu (i wielu innych algorytmów uczenia maszynowego), które akceptują kategoryczne dane wejściowe, są po prostu zautomatyzowaniem kodowania cech kategorycznych dla ciebie lub przy użyciu metody, która staje się computationally intractable for large numbers of categories.

A notable exception is H2O. H2O ma bardzo efficient method do bezpośredniego przetwarzania danych kategorycznych, co często daje mu przewagę nad metodami opartymi na drzewach, które wymagają jedno-hot-kodowania.

This article by Will McGinnis has a very good discussion of one-hot-encoding and alternatives.

This article by Nick Dingwall and Chris Potts has a very good discussion about categorical variables and tree based learners.

Powiązane problemy