我在2014年发现了这个线程,答案是否定的,sklearn随机森林分类器不能处理分类变量(或者至少不能直接处理(。答案在2020年改变了吗?
我想为我的模型提供gender
功能。然而,gender
可以取三个值:M
、F
和np.nan
。如果我将这一列编码为三个二分列,那么随机森林分类器如何知道这三列表示单个特征?
假设max_features
=7。当训练一棵给定的树时,它会随机选择七个特征。假设选择了gender
。如果gender
被分为三列(gender_M
、gender_F
、gender_NA
(,随机森林分类器会总是选择所有三列并将其作为一个特征,还是有可能只选择一个或两个?
如果max_features
设置为低于实际列数的值(这是一种可取的方法,请参阅文档中max_features
的推荐值(,则是的,对于随机林中的给定估计器,有可能只考虑伪列的子集。
但这并不一定太糟糕。在决策树中,一个特征被选择为给定级别的节点,目的是优化某些度量,独立于其他特征,也就是说,只考虑实际特征和目标。因此,在某种意义上,模型不会将这些伪列视为属于同一功能的。
不过,一般来说,二进制特征的最佳方法是想出一个合适的方法来填充缺失的值,并将其转换为编码为0
s和1
s的单列。