我刚刚了解了伪变量及其陷阱。因此,假设我有一个包含3个类别的类别列,例如:
Dog
Cat
Bear
我将其分为3个单独的列,分别为IsDog,IsCat和IsBear,其中包含0/1,因此可以在模型中使用它。但他们说,虚拟列的数量应始终为(number_of_categories-1)。 那么我应该删除最后一个(在本例中为IsBear),还是实际上没关系,只需删除随机的一个?
答案 0 :(得分:1)
对于每个类别列,您都可以让熊猫自动为您完成此操作,
请注意,它将自动为新的列名加上前缀(例如,具有3个类别的类别变量“ Dog”将给出两个新列:Dog_1,Dog_2),并将删除原始列(“ Dog”)。使用drop first
选项,它将为您提供k-1个类别的列的k-1个虚拟列(即,如上以及根据您的问题,具有3个类别的Dog列变为2 –而不是3 –个虚拟列)。
df = pd.get_dummies(df, columns=['cat_var_1', 'cat_var_2'], drop_first=True)