我找到了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
和1
。