【问题标题】:Necessity of droping column to avoid dumy variable traps in sklearn one hot encoding删除列以避免 sklearn 一热编码中的虚拟变量陷阱的必要性
【发布时间】:2021-08-20 05:55:10
【问题描述】:

我测试了 sklearn One Hot Encoding 的线性回归问题。它表明当没有删除任何列时,r_2 得分更好。

from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(drop= 'first') # r_2 score 0.67

首先删除 r2_score = 0.67

ohe = OneHotEncoder() # r_2 score = 0.78

不先删除(即保持默认)r2_score = .78

那么在 Sklearn OneHotEncoding 中不使用 drop= 'first' 可以吗?

【问题讨论】:

    标签: machine-learning scikit-learn one-hot-encoding


    【解决方案1】:

    OneHotEncoder 中的参数drop 并不是要指定是否应删除列。相反,正如官方documentation 所说:

    指定用于删除每个功能的一个类别的方法。

    特别是,drop='first' 选项将:

    删除每个功能中的第一个类别。如果只存在一个类别,则该功能将被完全删除。

    因此,可能会删除一整列,但前提是它只有一个类别(在这种情况下它无论如何都没有用)。

    关于 r2 分数的变化,文档也解决了这个问题:

    但是,删除一个类别会破坏原始表示的对称性,因此可能会导致下游模型出现偏差,例如惩罚线性分类或回归模型。

    当您使用 drop='first' 时,这似乎影响了您的模型,最好不要删除任何类别(是的,您确实可以这样做)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-28
    • 2019-07-14
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2018-08-19
    • 2020-11-30
    相关资源
    最近更新 更多