好吧,我很惊讶,但事实证明,sklearn的决策树确实无法处理分类数据。从2015年6月开始,这个问题(#4899)出现了Github问题,但是它仍然是开放的(我建议您快速浏览一下该线程,因为有些评论非常有趣)。
正如您在此处所做的那样,将分类变量编码为整数的问题在于,它对它们强加了一个 顺序 ,根据情况的不同,该 顺序
可能有意义,也可能没有意义。例如,你可以编码
['low', 'medium', 'high']的
[0, 1, 2],因为
'low' <'medium' < 'high'(我们称这些分类变量 序数
),但你仍然隐含作出额外的(也可能是不希望的)假设之间的距离
'low'和
'medium'与之间的距离相同
'medium',并
'high'(在没有影响决策树,但很重要,例如在k-
nn和聚类中)。但是这种方法在诸如
['red','green','blue']或的情况下完全失败了
['male','female'],因为我们不能要求它们之间有任何有意义的相对顺序。
因此,对于非常规分类变量,正确编码它们以供sklearn决策树使用的方法是使用
OneHotEnprer模块。用户指南的“编码分类功能”部分也可能会有所帮助。



