假设我有一个分类特征,颜色,它取值
['red','blue','green','orange'],
我想用它来预测随机森林里的东西 . 如果我对它进行单热编码(即我将其更改为四个虚拟变量),我如何告诉sklearn这四个虚拟变量实际上是一个变量?具体来说,当sklearn随机选择要在不同节点使用的特征时,它应该包括红色,蓝色,绿色和橙色虚拟对象,或者它不应包括任何一个 .
我听说没有办法做到这一点,但我认为必须有一种方法来处理分类变量,而不是随意将它们编码为数字或类似的东西 .
不,没有't. Somebody' s working on this并且某天补丁可能会合并到主线,但是现在除了虚拟(one-hot)编码之外,scikit-learn中不支持分类变量 .
接受分类输入的随机森林(以及许多其他机器学习算法)的大多数实现要么只是为您自动编码分类特征,要么使用成为computationally intractable for large numbers of categories的方法 .
A notable exception is H2O . H2O有一个非常直接处理分类数据的方法,它经常使它比基于树的方法具有优势,这些方法需要单热编码 .
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 .
您必须将分类变量分为一系列虚拟变量 . 是的,我知道它很烦人,似乎没有必要,但这就是sklearn的工作原理 . 如果你正在使用熊猫使用pd.get_dummies,它的效果非常好 .
3 回答
不,没有't. Somebody' s working on this并且某天补丁可能会合并到主线,但是现在除了虚拟(one-hot)编码之外,scikit-learn中不支持分类变量 .
接受分类输入的随机森林(以及许多其他机器学习算法)的大多数实现要么只是为您自动编码分类特征,要么使用成为computationally intractable for large numbers of categories的方法 .
A notable exception is H2O . H2O有一个非常直接处理分类数据的方法,它经常使它比基于树的方法具有优势,这些方法需要单热编码 .
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 .
您必须将分类变量分为一系列虚拟变量 . 是的,我知道它很烦人,似乎没有必要,但这就是sklearn的工作原理 . 如果你正在使用熊猫使用pd.get_dummies,它的效果非常好 .