Scikit-Learn中的分类特征编码枚举化

3

我目前正尝试为Scikit-Learn的随机森林模型(回归)预处理一个具有许多分类特征的大型数据集。由于分类数据的本质,需要避免通过编码方案引入任何序数。

H2o ML-Framework(链接)提供了 enum 编码,非常适合我的数据。然而,我依赖于Scikit-Learn的随机森林模型。

是否有人知道一些适用于Scikit-Learn模型的enum编码?(独热编码不是选项)

提前感谢!


不确定枚举编码(实际上从未听说过),但是请参考 https://github.com/scikit-learn-contrib/categorical-encoding 或 https://github.com/dirty-cat/dirty_cat,并且正如提到的那样,CatBoost具有许多基本和高级内置编码方法。 - TwinPenguins
1个回答

1

在sklearn中,只有标签编码LabelEncoder和OHE可用。然而,它没有提供你想要的功能,因为类别仅被编码为整数,这对于顺序类别才有意义。我相信,在sklearn中,这是留给模型来实现此类枚举类别处理的(因为sklearn中有许多模型,其中大多数无法从这种编码中受益)。

我认为LightGBM声称here它在内部实现了这种类型的类别处理,但我并不确定是否属实。优点是它们都有RF和GBM树构建器,所以你可以轻松地在这两者之间切换,并且比sklearn实现更快。

请注意,CatBoost 还有一个用于内部类别编码的强大工具包,但我目前没有使用经验。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接