Як виконати кодування міток у r (з прикладами)


Часто в машинному навчанні ми хочемо перетворити категоричні змінні в певний тип числового формату, який можна легко використовувати алгоритмами.

Одним із способів зробити це є використання кодування міток , яке присвоює кожному категоричному значенню ціле число в алфавітному порядку.

Наприклад, на наступному знімку екрана показано, як перетворити кожне унікальне значення категоріальної змінної під назвою Team на ціле значення в алфавітному порядку:

Існує два поширених способи кодування міток у R:

Спосіб 1: Використовуйте Base R

 df$my_var <- as. numeric (factor(df$my_var))

Спосіб 2. Використовуйте пакет 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)

Наступні приклади показують, як використовувати кожен метод на практиці.

Приклад 1: кодування міток за допомогою Base R

У наступному коді показано, як використовувати функцію R base factor() для перетворення категоріальної змінної під назвою team у числову змінну:

 #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

Зверніть увагу на нові значення в стовпці команди :

  • «А» стало 1 .
  • «В» стало 2 .
  • «C» стало 3 .

Ми успішно перетворили стовпець команди з категоріальної змінної на числову.

Приклад 2: кодування міток за допомогою пакета CatEncoders

У наведеному нижче коді показано, як використовувати функції в пакеті CatEncoders() для перетворення категоріальної змінної під назвою team у числову змінну:

 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

Знову ми створили такі нові значення в стовпці team :

  • «А» стало 1 .
  • «В» стало 2 .
  • «C» стало 3 .

Це відповідає результатам попереднього прикладу.

Зверніть увагу, що за допомогою цього методу ви також можете використовувати inverse.transform() , щоб отримати вихідні значення стовпця team :

 #display original team labels
reverse. transform (labs, df$team)

[1] “A” “A” “B” “B” “B” “B” “C” “C”

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в R:

Як створити категоріальну змінну з continue у R
Як створити категоріальні змінні в R
Як перетворити категоріальні змінні на числові в R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *