在Tom Mitchell的机器学习书中,有一个众所周知的问题,即根据以下数据构建决策树,其中“Play ball”是目标变量。
生成的树如下
我想知道是否可以使用scikit-learn构建这棵树。我发现了一些例子,其中决策树可以表示为
export_graphviz(clf) Source(export_graphviz(clf, out_file=None))
然而,看起来scikit-learn对于分类数据的处理效果不佳,数据必须被二值化成多个列。因此,结果上不可能构建出与图片中完全相同的树。这是正确的吗?
回答:
是的,使用scikit-learn不可能构建出这样的树,这是正确的。
主要原因是这是一棵三叉树(节点最多有三个子节点),而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