【问题标题】:How to align training and test set when using pandas `get_dummies` with `drop_first=True`?使用 pandas `get_dummies` 和 `drop_first=True` 时如何对齐训练和测试集?
【发布时间】:2019-06-06 07:11:00
【问题描述】:

我有一个来自电信公司的数据集,其中包含许多分类特征。我使用pandas.get_dummies 方法将它们转换为一种带有drop_first=True 选项的热编码格式。现在如何使用 predict 函数,测试输入数据需要以相同的方式编码,因为 drop_first=True 选项也删除了一些列,我如何确保以类似的方式进行编码。

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

【问题讨论】:

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


    【解决方案1】:

    使用drop_first=True时,您有两种选择:

    1. 在训练集和测试集拆分数据之前执行 one-hot 编码。 (或者合并数据集,进行one-hot编码,再拆分数据集)。

    2. 在 one-hot 编码后对齐数据集:内连接会删除其中一组中不存在的特征(无论如何它们都无用)。 train, test = train.align(test, join='inner', axis=1)

    您(正确地)注意到方法 2 可能无法达到您的预期,因为您使用的是drop_first=True。所以你只剩下方法1了。

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 2013-01-04
      • 1970-01-01
      • 2015-07-16
      • 2017-11-01
      • 1970-01-01
      • 2016-02-22
      • 2015-01-17
      • 2013-06-18
      相关资源
      最近更新 更多