【问题标题】:Using dummy variables for Machine Learning with more than one categorical variable使用具有多个分类变量的机器学习虚拟变量
【发布时间】:2017-10-24 21:54:20
【问题描述】:

我希望使用 Python 对一些具有大量分类变量的数据进行多元线性回归或逻辑回归。我知道,对于一个分类变量,我需要将其转换为一个虚拟变量,然后删除一种虚拟变量以避免共线性,但是有没有人熟悉在处理一种以上类型的分类变量时应该采用什么方法?

我对每个都做同样的事情吗?例如将每种类型的记录转换为一个虚拟变量,然后为每个类型删除一个虚拟变量以避免共线性?

【问题讨论】:

    标签: python machine-learning dummy-variable


    【解决方案1】:

    如果有很多分类变量,而且在这些变量中,如果有很多级别,使用虚拟变量可能不是一个好的选择。

    如果分类变量具有 bin 形式的数据,例如,变量 age 具有 10-18, 18-30, 31-50, ... 形式的数据,您可以使用标签编码或使用 bin 的均值/中值创建新的数字特征或创建低龄和高龄的两个特征

    如果您有从任务开始到结束的时间戳,例如机器的开始时间到机器停止的时间,您可以通过以小时或分钟为单位计算持续时间来创建新功能。

    给定许多分类变量但级别数很少,在这种情况下,显而易见且唯一的出路是对分类变量应用 One-Hot Encoding。

    但是当一个分类变量有很多级别时,可能会出现某些情况太少或太频繁。对此类数据应用 One-Hot Encoding 会严重影响模型性能。在这种情况下,建议应用某些业务逻辑/特征工程,从而首先减少层数。此后,如果新功能仍然是分类的,您可以对新功能使用 One-Hot Encoding。

    【讨论】:

    • 谢谢。我正在处理各种不同的数据集,但绝大多数变量都是分类的。例如,我正在查看的当前数据集大约有 110k 条记录,并且有 11 个变量宽。除了日期,其中只有 1 个是数字的。对于使用这样的数据集进行机器学习的建议是什么,其中大多数变量都是分类的,尽管不一定有很多级别?
    【解决方案2】:

    在有多个分类变量需要替换为虚拟变量的情况下。该方法应该是为虚拟变量(如单个分类变量的情况)编码每个变量,然后删除每个变量存在的每个虚拟变量的一个实例,以避免共线性。

    基本上,每个分类变量都应该被视为一个单独的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 2018-11-09
      • 2022-01-23
      • 2018-03-27
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      相关资源
      最近更新 更多