Как выполнить кодирование меток в r (с примерами)
Часто в машинном обучении мы хотим преобразовать категориальные переменные в какой-то числовой формат, который может быть легко использован алгоритмами.
Один из способов сделать это — использовать кодировку меток , которая присваивает каждому категориальному значению целочисленное значение в алфавитном порядке.
Например, на следующем снимке экрана показано, как преобразовать каждое уникальное значение категориальной переменной Team в целочисленное значение в алфавитном порядке:
Существует два распространенных способа выполнения кодирования меток в R:
Метод 1: используйте базу 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. Кодирование этикеток с использованием базы 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 .
- «С» стало 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
Мы снова сгенерировали следующие новые значения в столбце команды :
- «А» стало 1 .
- «Б» стало 2 .
- «С» стало 3 .
Это соответствует результатам предыдущего примера.
Обратите внимание, что с помощью этого метода вы также можете использовать inverse.transform() для получения исходных значений столбца команды :
#display original team labels reverse. transform (labs, df$team) [1] “A” “A” “B” “B” “B” “B” “C” “C”
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как создать категориальную переменную из continue в R
Как создать категориальные переменные в R
Как преобразовать категориальные переменные в числовые в R