【问题标题】:Dummy variable trap, does it matter which dummy column I delete?虚拟变量陷阱,我删除哪个虚拟列有关系吗?
【发布时间】:2020-03-18 15:51:08
【问题描述】:

我刚刚了解了虚拟变量及其陷阱。因此,假设我有一个包含 3 个类别的分类列,例如:

Dog
Cat
Bear

我将它分成 3 个单独的列,IsDog、IsCat、IsBear,其中包含 0/1,因此我可以在我的模型中使用它。但是他们说虚拟列的数量应该始终是(number_of_categories - 1)。 那么我应该删除最后一个(在这种情况下是 IsBear),还是实际上无关紧要,只是随机删除一个?

【问题讨论】:

  • 这个问题更类似于 CrossValidated。无论如何,改变的是对系数的解释。如果您使用的是随机森林之类的方法,那没关系。为了获得更好的答案,请看这里,它可能已被多次询问。
  • 从模型的角度来看,这并不重要。但是,如果您关心您在分析中看到的内容(也就是说,您希望看到 Bear/Dog),您可能需要删除特定的列。
  • 搜索解释的更好方法是使用“One Hot Encoding”一词,表示您的类别中只有一个是“hot”(真),其余不是(或 false/0) .它分解为“IsBear/IsCat/IsDog”与“IsBear/IsCat/Neither”之间的区别。就实际信息价值而言,两种制度没有区别

标签: python pandas data-science dummy-variable


【解决方案1】:

您可以让 Pandas 为您自动为每个分类列执行此操作,如下所示。

请注意,它将自动为新列名称添加前缀(例如,具有 3 个类别的分类变量“Dog”将给出两个新列:Dog_1、Dog_2),并且它将删除原始列(“Dog”)。使用drop first 选项,它将为具有 k 个类别的列提供 k-1 个虚拟列(即,具有 3 个类别的列 Dog 变为 2 - 而不是 3 - 虚拟列,如上所述,并且根据您的问题)。

df = pd.get_dummies(df, columns=['cat_var_1', 'cat_var_2'], drop_first=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2018-08-19
    • 2018-04-17
    • 2018-05-29
    • 2019-07-14
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多