Scikit决策树分类特征
Posted
技术标签:
【中文标题】Scikit决策树分类特征【英文标题】:Scikit Decision tree categorical features 【发布时间】:2018-05-15 03:44:34 【问题描述】:Tom's Mitchell Machine Learning 书中有一个众所周知的问题是根据以下数据构建决策树,其中 Play ball 是目标变量。
生成的树如下
我想知道是否可以使用 scikit-learn 构建这棵树。我发现了几个可以将决策树描述为的示例
export_graphviz(clf)
Source(export_graphviz(clf, out_file=None))
但是看起来 scikit 不能很好地处理分类数据,数据必须被二值化成几列。因此,不可能完全按照图片构建树。对吗?
【问题讨论】:
可用数据的文本形式? 标签编码? 我自己没有用过,但是这里有一个快速搜索的结果,来自 cmets,看起来很有希望。 github.com/scikit-learn/scikit-learn/pull/4899 正如@Adorn 所说,您可以将分类变量编码为一次性编码项,然后运行 scikit 并检查结果。你只需要以正确的方式解释结果。 Passing categorical data to Sklearn Decision Tree的可能重复 【参考方案1】:是的,用 scikit-learn 无法构建这样的树是正确的。
主要原因是这是一棵三叉树(节点最多有三个子节点)但是scikit-learn implements only binary trees - 节点正好有两个子节点或没有子节点:
cdef class Tree:
"""Array-based representation of a binary decision tree.
...
但是,可以得到一个等价的二叉树的形式
Outlook == Sunny
true => Humidity == High
true => no
false => yes
false => Outlook == Overcast
true => yes
false => Wind == Strong
true => no
false => yes
【讨论】:
@com 这就是我在解释 one-hot 编码特征的结果时所说的。以上是关于Scikit决策树分类特征的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Scikit Learn 决策树中根据分类变量拆分节点?