在Tom的Mitchell机器学习书中有一个众所周知的问题,即基于以下数据构建决策树,其中Play ball是目标变量。
生成的树如下所示
我想知道是否有可能用scikit learn构建这棵树。我发现了几个例子,其中决策树可以描述为
export_graphviz(clf)
Source(export_graphviz(clf, out_file=None))
然而,看起来Scikit不能很好地处理分类数据,数据必须被二进制化为几列。因此,不可能完全按照图中的方式构建树。是正确的吗?
是的,正确的是不可能用Scikit-学建立这样的树。
主要原因是这是一个三元树(节点最多有三个子节点),但scikit learn只实现二叉树-节点正好有两个子节点或没有子节点:
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