如何在 r 中进行 one-hot 编码


One-hot 编码用于将分类变量转换为机器学习算法可以使用的格式。

one-hot 编码的基本思想是创建新变量,用值 0 和 1 来表示原始分类值。

例如,下图显示了我们如何进行单热编码,将包含团队名称的分类变量转换为仅包含 0 和 1 值的新变量:

以下分步示例展示了如何在 R 中对这一精确数据集进行一次性编码。

第 1 步:创建数据

首先,我们在 R 中创建以下数据框:

 #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

第2步:执行one-hot编码

接下来,让我们使用caret包的dummyVars()函数对数据框中的“team”变量进行一次性编码:

 library ( caret)

#define one-hot encoding function
dummy <- dummyVars(" ~ . ", data=df)

#perform one-hot encoding on data frame
final_df <- data. frame (predict(dummy, newdata=df))

#view final data frame
final_df

  teamA teamB teamC points
1 1 0 0 25
2 1 0 0 12
3 0 1 0 15
4 0 1 0 14
5 0 1 0 19
6 0 1 0 23
7 0 0 1 25
8 0 0 1 29

请注意,由于原始“团队”列包含三个唯一值,因此数据框中已添加三个新列。

另请注意,原始的“团队”列已从数据框中删除,因为不再需要它。

One-hot 编码已完成,我们现在可以将此数据集输入到我们选择的任何机器学习算法中。

注意:您可以在此处找到dummyVars()函数的完整在线文档。

其他资源

以下教程提供了有关使用分类变量的更多信息:

如何在 R 中创建分类变量
如何在 R 中绘制分类数据
分类变量或定量变量:有什么区别?

添加评论

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