Jak wykonać kodowanie etykiet w r (z przykładami)
Często w uczeniu maszynowym chcemy przekonwertować zmienne kategoryczne na jakiś format liczbowy, który może być łatwo wykorzystany przez algorytmy.
Jednym ze sposobów osiągnięcia tego jest użycie kodowania etykiet , które przypisuje każdej wartości kategorycznej wartość całkowitą w oparciu o porządek alfabetyczny.
Na przykład poniższy zrzut ekranu pokazuje, jak przekonwertować każdą unikalną wartość zmiennej kategorialnej o nazwie Zespół na wartość całkowitą w oparciu o kolejność alfabetyczną:
Istnieją dwa popularne sposoby kodowania etykiet w języku R:
Metoda 1: Użyj podstawy R
df$my_var <- as. numeric (factor(df$my_var))
Metoda 2: Użyj pakietu CatEncoders
library (CatEncoders) #define original categorical labels labs = LabelEncoder. fit (df$my_var) #convert labels to numeric values df$team = transform(labs, df$my_var)
Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce.
Przykład 1: Kodowanie etykiet przy użyciu Base R
Poniższy kod pokazuje, jak użyć funkcji R basefactor() do przekształcenia zmiennej kategorialnej zwanej zespołem na zmienną numeryczną:
#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 #perform label encoding on team variable df$team <- as. numeric (factor(df$team)) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
Zwróć uwagę na nowe wartości w kolumnie zespół :
- „A” stało się 1 .
- „B” stało się 2 .
- „C” stało się 3 .
Pomyślnie przekonwertowaliśmy kolumnę zespołu ze zmiennej jakościowej na zmienną numeryczną.
Przykład 2: Kodowanie etykiet przy użyciu pakietu CatEncoders
Poniższy kod pokazuje, jak używać funkcji pakietu CatEncoders() do konwersji zmiennej kategorialnej zwanej zespołem na zmienną numeryczną:
library (CatEncoders) #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)) #define original categorical labels labs = LabelEncoder. fit (df$team) #convert labels to numeric values df$team = transform(labs, df$team) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
Ponownie wygenerowaliśmy następujące nowe wartości w kolumnie zespół :
- „A” stało się 1 .
- „B” stało się 2 .
- „C” stało się 3 .
Jest to zgodne z wynikami poprzedniego przykładu.
Pamiętaj, że za pomocą tej metody możesz także użyć funkcji inverse.transform() , aby uzyskać oryginalne wartości kolumny zespołu :
#display original team labels reverse. transform (labs, df$team) [1] “A” “A” “B” “B” “B” “B” “C” “C”
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:
Jak utworzyć zmienną kategoryczną z kontynuacji w R
Jak utworzyć zmienne kategoryczne w R
Jak przekonwertować zmienne kategoryczne na numeryczne w R