hah*_*awg 46 python random-forest scikit-learn one-hot-encoding
假设我有一个分类特征,颜色,它取值
['red','blue','green','orange'],
我想用它来预测随机森林里的东西.如果我对它进行单热编码(即我将其更改为四个虚拟变量),我如何告诉sklearn这四个虚拟变量实际上是一个变量?具体来说,当sklearn随机选择要在不同节点使用的特征时,它应该包括红色,蓝色,绿色和橙色虚拟对象,或者它不应包括任何一个.
我听说没有办法做到这一点,但我认为必须有一种方法来处理分类变量,而不是随意将它们编码为数字或类似的东西.
Fre*_*Foo 30
不,没有.有人正在研究这个问题,补丁可能会在某天合并到主线上,但是现在除了虚拟(一热)编码之外,scikit-learn中不支持分类变量.
den*_*son 11
接受分类输入的随机森林(以及许多其他机器学习算法)的大多数实现要么仅为您自动编码分类特征,要么使用对于大量类别而言在计算上难以处理的方法.
一个值得注意的例外是H2O.H2O有一种非常有效的方法来直接处理分类数据,这通常使其优于需要单热编码的基于树的方法.
Will McGinnis撰写的这篇文章对单热编码和替代方案进行了非常好的讨论.
Nick Dingwall和Chris Potts的这篇文章对分类变量和基于树的学习者进行了很好的讨论.
Hem*_*lli 10
您必须将分类变量分为一系列虚拟变量.是的,我知道它很烦人,似乎没有必要,但这就是sklearn的工作原理.如果你正在使用熊猫 使用pd.get_dummies,它的效果非常好.
| 归档时间: |
|
| 查看次数: |
31200 次 |
| 最近记录: |