代码之家  ›  专栏  ›  技术社区  ›  Kugan

Python中的特征工程

  •  0
  • Kugan  · 技术社区  · 3 年前

    我如何知道何时应用LabelEncoder()或OneHotEncode()?

    我使用LabelEncoder为RandomForestProgsor模型编码分类变量,它给出了极高的均方误差。我尝试过用GridSearchCV进行超参数调整,但它仍然给出了相同的值

    0 回复  |  直到 3 年前
        1
  •  0
  •   Nick ODell    3 年前

    根据文档,应避免使用LabelEncoder进行以下操作:

    这个变换器应该用于编码目标值,即y,而不是输入X。

    ( Source. )

    因此,我建议使用OneHotEncoder。

        2
  •  -1
  •   hanpat99    3 年前

    知道何时申请 LabelEncoder OneHotEncoder 取决于分类变量的性质和机器学习模型的具体要求。

    以下是一些通用指南:

    1. LabelEncoder :使用 LabelEncoder 当你有一个有序的分类变量时,这意味着分类有一个自然的顺序或层次。 LabelEncoder 为每个类别分配一个唯一的整数标签,保留顺序关系。它通常用于对目标变量进行编码,或者在使用可以直接处理序数标签的算法时使用。它主要用于保留目标类的平凡性,而不是用于featurr编码。对于功能编码,可以使用 OrdinalEncoder 相反

    Check this answer for more insight

    1. OneHotEncoder :使用 OneHotEncoder 当你有名义分类变量时,这意味着分类没有固有的顺序或层次。 OneHotEncoder 为每个类别创建一个二进制矢量,其中值1表示该类别的存在,0表示不存在。它适用于无法直接处理分类变量的算法,或者当您希望避免在类别之间强加任何顺序关系时。

    现在,来谈谈你的 RandomForestRegressor 使用后的模型 LabelEncoder 对于分类变量,这表明编码的标签可能不适合您的模型。 LabelEncoder 为类别分配任意整数标签,而不考虑它们的固有关系。结果,该模型可能感知编码标签中的平凡性或大小的错误感觉,从而导致次优结果。

    在这种情况下,您应该考虑使用 OneHotEncoder 而不是 LabelEncoder 用于您的分类变量。 OneHotEncoder 将为每个类别创建二进制伪变量,为RandomForestProgsor模型提供更合适的表示。

    请记住,使用 OneHotEncoder 会扩展你的特征矩阵的维度,所以一定要处理任何潜在的问题,比如多重共线性或过度使用内存,这些问题可能是由特征数量的增加引起的。

    推荐文章