Jak wykonać kodowanie one-hot w r
Kodowanie typu one-hot służy do konwertowania zmiennych kategorycznych do formatu, który może być używany przez algorytmy uczenia maszynowego .
Podstawową ideą kodowania one-hot jest utworzenie nowych zmiennych, które przyjmują wartości 0 i 1 w celu reprezentowania oryginalnych wartości kategorycznych.
Na przykład poniższy obraz pokazuje, w jaki sposób kodujemy jednorazowo, aby przekonwertować zmienną kategorialną zawierającą nazwy zespołów na nowe zmienne zawierające tylko wartości 0 i 1:
Poniższy przykład krok po kroku pokazuje, jak wykonać jednorazowe kodowanie dla tego dokładnego zestawu danych w R.
Krok 1: Utwórz dane
Najpierw utwórzmy następującą ramkę danych w R:
#create data frame df <- data. frame (team=c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'), points=c(25, 12, 15, 14, 19, 23, 25, 29)) #view data frame df team points 1 to 25 2 to 12 3 B 15 4 B 14 5 B 19 6 B 23 7 C 25 8 C 29
Krok 2: Wykonaj kodowanie na gorąco
Następnie użyjmy funkcji dummyVars() pakietu caret , aby jednorazowo zakodować zmienną „team” w ramce danych:
library ( caret) #define one-hot encoding function dummy <- dummyVars(" ~ . ", data=df) #perform one-hot encoding on data frame final_df <- data. frame (predict(dummy, newdata=df)) #view final data frame final_df teamA teamB teamC points 1 1 0 0 25 2 1 0 0 12 3 0 1 0 15 4 0 1 0 14 5 0 1 0 19 6 0 1 0 23 7 0 0 1 25 8 0 0 1 29
Należy zauważyć, że do ramki danych dodano trzy nowe kolumny, ponieważ pierwotna kolumna „zespół” zawierała trzy unikalne wartości.
Należy również pamiętać, że oryginalna kolumna „zespół” została usunięta z ramki danych, ponieważ nie jest już potrzebna.
Kodowanie typu „one-hot” zostało ukończone i możemy teraz wprowadzić ten zbiór danych do dowolnego wybranego algorytmu uczenia maszynowego.
Uwaga : Pełną dokumentację online funkcji dummyVars() można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki zawierają dodatkowe informacje na temat używania zmiennych kategorycznych:
Jak utworzyć zmienne kategoryczne w R
Jak wykreślić dane kategoryczne w R
Zmienne kategoryczne lub ilościowe: jaka jest różnica?