在使用带有drop_first = True的熊猫get_dummies时如何对齐训练和测试集?

时间:2019-01-11 11:02:31

标签: python machine-learning sklearn-pandas one-hot-encoding

我有一家电信公司的数据集,具有很多分类功能。我使用pandas.get_dummies方法通过drop_first=True选项将它们转换为一种热编码格式。现在,我该如何使用预测函数,需要以相同的方式对测试输入数据进行编码,因为drop_first = True选项还删除了一些列,如何确保以类似的方式进行编码。

编码前的数据集形状:(7043, 21) 编码后的数据集形状:(7043, 31)

1 个答案:

答案 0 :(得分:0)

如果使用drop_first=True,则有两个选择:

  1. 在训练和测试集中分割数据之前执行一键编码。 (或合并数据集,执行一次热编码,然后再次拆分数据集。)

  2. 在进行一键编码后对齐数据集:内部联接将删除其中一组不存在的功能(无论如何它们将无用)。 train, test = train.align(test, join='inner', axis=1)

您(正确地)注意到方法2可能无法达到预期效果,因为您正在使用drop_first=True。因此,您将剩下方法1。