我应该将对象变量更改为整数还是创建虚拟变量?

问题描述 投票:0回答:3

我正在尝试创建一个模型来预测某人是否有中风的风险。我的数据包含一些“对象”变量,可以轻松编码为 0 和 1(例如性别)。但是,我有一些具有 4 个以上类别的对象变量(例如工作类型)。

我正在尝试将这些对象编码为整数,以便我的模型可以摄取它们。我遇到了两种方法:

  1. 为每个特征创建虚拟变量,这会创建更多列并将它们编码为 0 和 1
  2. 使用 LabelEncoder 将对象转换为整数,为同一列中的每个类别分配值,例如 0、1、2、3 等。

这两种方法有区别吗?如果是这样,建议的最佳前进道路是什么?

machine-learning scikit-learn dummy-variable
3个回答
0
投票

是的,这两个是不同的。如果您使用第一种方法,它会创建更多列。这意味着模型需要更多的特征来适应。如果您使用第二种方式,它只会为模型创建 1 个特征来适应。在机器学习中,两种方式都有自己的优点和缺点。

推荐 1 条路径取决于您使用的机器学习算法、特征重要性等...


0
投票

走虚拟变量路线。

假设您有一个包含 5 种工作类型的专栏:建筑工人、数据科学家、零售助理、机器学习工程师和调酒师。如果您使用标签编码器 (0-4) 来缩小数据范围,您的模型会将“数据科学家”的职位解释为比“建筑工人”的职位大 1。它还会解释“调酒师”的职称比“建筑工人”大4。

这里的问题是这些工作类型实际上彼此没有关系,因为它们纯粹是分类变量。如果您对列进行虚拟化,它确实会扩大您的数据范围,但您可以更准确地表示数据实际表示的内容。


0
投票

使用虚拟变量,从而创建更多列/特征来拟合数据。由于您的数据将事先进行缩放,因此不会在将来产生问题。 总的来说,任何模型的准确性都取决于数量。涉及的特征越多,我们的预测就越准确

© www.soinside.com 2019 - 2024. All rights reserved.