Як виконати кодування міток у 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