代码之家  ›  专栏  ›  技术社区  ›  user3115933

何时将分类变量转换为数字变量进行机器学习?

  •  0
  • user3115933  · 技术社区  · 7 年前

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

    然而,为了机器学习的目的,我对将一些分类变量转换为数字变量感到困惑。我在网上搜索过,但我找不到关于这个问题的具体规则(如果有的话)。

    这个 XG增压 位于以下url的渐晕图( xgboost )提到“Xgboost只管理数字向量。”这难道不意味着我的所有特性(变量)只需要包含数值吗?然而,我看到一些教程使用 XG增压 其中变量为分类变量。

    在此问题上的任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   blacksite    7 年前

    统计/机器学习中处理分类特征的主要方法是通过一种称为 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 新列指示给定值的特定类别/属性的存在或不存在 动物 对于那一排。

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