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

When to convert a categorical variable into a numerical variable for machine learning?

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

但是,我对为了机器学习的目的将一些分类变量转换为数值变量感到困惑。我在网上搜索过,但找不到关于该主题的特定规则(如果存在的话)。

下面 url (xgboost) 的 xgboost 小插图提到 "Xgboost manages only numeric vectors." 这是否意味着我所有的特征(变量)只需要包含数值?但是,我看过一些使用 xgboost 的教程,其中变量是分类变量。

如有任何帮助,我们将不胜感激。

在 statistics/machine 学习中处理分类特征的主要方式是通过一种称为 one-hot encoding 的机制。

以下面的数据为例:

outcome    animal
      1       cat
      1       dog
      0       dog
      1       cat

假设您想根据给定病例的动物类型预测结果(无论结果是什么)(observation/row/subject/etc)。这样做的方法是以单热方式对 animal 进行编码,如下所示:

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

基数 k 的动物列已被编码到 k 新列中,表明存在或不存在特定的 category/attribute 给定该行的 animal 的值。

从那里,您可以使用您想要的任何模型来预测基于(现在不同编码的)动物列的结果。但一定要将一只动物(一组)留在模型之外作为对照组。在这种情况下,您可以拟合逻辑回归模型 outcome ~ is_dog 并将 is_dog 的斜率系数解释为狗 与狗 相比第 1 个结果的可能性的增加或减少猫.