虚拟变量陷阱,我删除哪个虚拟列有关系吗?
Dummy variable trap, does it matter which dummy column I delete?
我刚刚了解了虚拟变量及其陷阱。因此,假设我有一个包含 3 个类别的分类列,例如:
Dog
Cat
Bear
我将它分成 3 个单独的列,IsDog、IsCat、IsBear,其中包含 0/1,因此我可以在我的模型中使用它。但他们说虚拟列的数量应该总是 (number_of_categories - 1)。
那么我应该删除最后一个(在本例中为 IsBear),还是实际上无关紧要,只是随机拿走一个?
您可以让 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)
我刚刚了解了虚拟变量及其陷阱。因此,假设我有一个包含 3 个类别的分类列,例如:
Dog
Cat
Bear
我将它分成 3 个单独的列,IsDog、IsCat、IsBear,其中包含 0/1,因此我可以在我的模型中使用它。但他们说虚拟列的数量应该总是 (number_of_categories - 1)。 那么我应该删除最后一个(在本例中为 IsBear),还是实际上无关紧要,只是随机拿走一个?
您可以让 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)