【问题标题】:OneHotEncoding issue with unseen data on test set一个热编码问题,测试集上的数据不可见
【发布时间】:2021-07-26 14:47:33
【问题描述】:

我有包含数值和分类变量的数据。我已将数据拆分为训练和测试。我想在插补后进行一次热编码。测试集上有看不见的数据。

我了解handle_unknown='ignore' 解决了这个问题。但是,我还想删除一列 (drop='first') 以避免多重共线性。 OnehotEncoding 不能同时接受这两个。

有没有办法处理看不见的数据并避免多重共线性?

注意:我正在使用 ColumnTransformer。

【问题讨论】:

  • 尝试设置两者时引发的错误提出了一个很好的观点:“handle_unknown 必须在指定 drop 参数时为 'error',因为两者都会创建全为零的类别。 "也就是说,如果您可以同时使用这两个选项,最终的行为将是测试集中看不见的级别将被视为与丢弃的级别完全相同。但是,如果您对这种效果感到满意,并且在某处没有自定义转换器,我看不到一种简单的方法。

标签: python machine-learning data-science one-hot-encoding


【解决方案1】:

您最好使用数组切片并设计一个自定义转换器,以便您仍然可以在您的ColumnTransformer 中应用此类转换器。 Here 您将找到一个如何创建自定义转换器的示例。

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 2021-06-28
    • 2018-08-27
    • 2021-01-16
    • 2020-11-12
    • 1970-01-01
    • 2019-05-02
    • 2020-04-14
    • 2020-01-16
    相关资源
    最近更新 更多