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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *