何时将分类变量转换为机器学习的数值变量?

时间:2017-11-14 17:51:10

标签: r machine-learning r-caret xgboost

我是机器学习的新手,我正在使用xgboost中的caret包对我的数据运行分类算法R

然而,我对于将某些分类变量转换为数值变量以进行机器学习感到困惑。我已经浏览了网页,但是我找不到一个特定的规则,如果它存在的话。

以下网址(xgboost)中的xgboost小插图提到“Xgboost仅管理数字向量”。这是否意味着我的所有功能(变量)只需要包含数值?但是,我已经看到一些使用xgboost的教程,其中变量是分类变量。

对此主题的任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

统计/机器学习中处理分类功能的主要方式是通过一种称为one-hot encoding的机制。

获取以下数据,例如:

outcome    animal
      1       cat
      1       dog
      0       dog
      1       cat

假设您想根据给定病例的动物类型(观察/行/受试者等)预测结果(无论是什么)。这样做的方法是以一种热门方式编码animal,如下所示:

outcome  is_dog   is_cat
      1       0        1
      1       1        0
      0       1        0
      1       0        1

基数 k 的动物栏已被编码到 k 新列中,表示在给定{{1}的值的情况下是否存在特定类别/属性为那一行。

从那里,你可以根据(现在不同编码的)动物专栏使用你想要预测结果的任何模型。但请确保将一只动物(一组)作为对照组留出模型。在这种情况下,您可能适合逻辑回归模型animal并将outcome ~ is_dog的斜率系数解释为与猫相比,狗的1个结果的可能性增加或减少< /强>