【问题标题】:Can sklearn random forest directly handle categorical features?sklearn 随机森林可以直接处理分类特征吗?
【发布时间】:2014-09-03 02:41:21
【问题描述】:

假设我有一个分类特征,颜色,它采用值

['红色','蓝色','绿色','橙色'],

我想用它来预测随机森林中的某些东西。如果我对其进行一次热编码(即我将其更改为四个虚拟变量),我如何告诉 sklearn 这四个虚拟变量实际上是一个变量?具体来说,当 sklearn 随机选择要在不同节点上使用的特征时,它应该包括红色、蓝色、绿色和橙色的假人,或者不应该包括任何一个。

我听说没有办法做到这一点,但我想必须有一种方法来处理分类变量,而不是将它们任意编码为数字或类似的东西。

【问题讨论】:

标签: python scikit-learn random-forest one-hot-encoding


【解决方案1】:

您可以使用以下方法直接将分类变量提供给随机森林:

  1. 首先使用 sklearn 标签编码器将特征类别转换为数字
  2. 第二次将标签编码的特征类型转换为字符串(对象)
le=LabelEncoder()
df[col]=le.fit_transform(df[col]).astype('str')

以上代码将解决您的问题

【讨论】:

    【解决方案2】:

    也许你可以用1~4来代替这四种颜色,也就是那一列是数字而不是颜色名称。然后带编号的列就可以在模型中使用了

    【讨论】:

    • 答案不正确。用 1-4 个数字替换颜色会误导基于树的模型。如果我们可以按照您的建议简单地执行此操作,我们将永远不需要一次性编码。
    【解决方案3】:

    不,没有。某人的working on this 和补丁可能有一天会合并到主线中,但现在除了虚拟(one-hot)编码之外,scikit-learn 中不支持分类变量。

    【讨论】:

    【解决方案4】:

    大多数接受分类输入的随机森林(以及许多其他机器学习算法)的实现要么只是为您自动编码分类特征,要么使用成为computationally intractable for large numbers of categories 的方法。

    A notable exception is H2O。 H2O 有一个非常好的 efficient method 用于直接处理分类数据,这通常使其优于需要 one-hot-encoding 的基于树的方法。

    This article by Will McGinnis has a very good discussion of one-hot-encoding and alternatives

    This article by Nick Dingwall and Chris Potts has a very good discussion about categorical variables and tree based learners.

    【讨论】:

    【解决方案5】:

    您必须将分类变量变成一系列虚拟变量。是的,我知道这很烦人,而且似乎没有必要,但这就是 sklearn 的工作方式。 如果您使用的是熊猫。使用 pd.get_dummies,它工作得非常好。

    【讨论】:

    • 如果训练和推理中存在相同的唯一值,它会非常有效,因此它不可靠。
    • 这不仅令人讨厌,而且还不够理想。使用虚拟变量时,随机森林的表现更差。请参阅此article 的以下引用:Imagine our categorical variable has 100 levels, each appearing about as often as the others. The best the algorithm can expect to do by splitting on one of its one-hot encoded dummies is to reduce impurity by ≈ 1%, since each of the dummies will be 'hot' for around 1% of the samples.
    猜你喜欢
    • 2023-03-09
    • 2015-09-28
    • 2020-08-19
    • 2014-04-17
    • 1970-01-01
    • 2019-03-14
    • 2020-05-16
    • 2015-12-16
    • 2019-11-16
    相关资源
    最近更新 更多