Как выполнить кодирование меток в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *