如何在 r 中执行标签编码(附示例)


在机器学习中,我们通常希望将分类变量转换为某种类型的数字格式,以便算法可以轻松使用。

实现此目的的一种方法是使用标签编码,它根据字母顺序为每个分类值分配一个整数值。

例如,以下屏幕截图显示了如何将名为Team的分类变量的每个唯一值转换为基于字母顺序的整数值:

在 R 中执行标签编码有两种常见方法:

方法一:使用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 基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

注意团队栏中的新值:

  • “A”变成了1
  • “B”变成了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

同样,我们在团队列中生成了以下新值:

  • “A”变成了1
  • “B”变成了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 中执行其他常见任务:

如何在 R 中通过 continue 创建分类变量
如何在 R 中创建分类变量
如何在 R 中将分类变量转换为数值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注