如何在 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 中执行其他常见任务: