首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》3.6.2 构建决策树

关灯直达底部

决策树可以通过将特征空间进行矩形划分的方式来构建复杂的决策边界。然而,必须注意:深度越大的决策树,决策边界也就越复杂,因而很容易产生过拟合现象。借助于scikit-learn,我们将以熵作为不纯度度量标准,构建一棵最大深度为3的决策树。虽然特征缩放是出于可视化的目的,但在决策树算法中,这不是必须的。代码如下:

执行上述代码,我们得到了决策数中与坐标轴平行的典型决策边界:

scikit-learn一个吸引人的功能就是,它允许将训练后得到的决策树导出为.dot格式的文件,这使得我们可以使用GraphViz程序进行可视化处理。GraphViz支持Linux、Windows和Mac OS X系统,可在http://www.graphviz.org免费下载。

首先我们从scikit-learn的tree子模块中调用export_graphviz函数生成.dot文件,代码如下:

在电脑上安装好GraphViz后,通过命令行窗口在保存tree.dot文件的路径处执行下面的命令,可将tree.dot文件转换为PNG文件。

通过观察GraphViz创建的图像,可以很好地回溯决策树在训练数据集上对各节点进行划分的过程。最初,决策树根节点包含105个样本,以花瓣宽度≤0.75厘米为界限,将其划分为分别包含34和71个样本的两个子节点。第一次划分后,可以看到:左子树上的样本均来自Iris-Setosa类(熵=0),已经无需再划分。在右子树上进一步划分,直到将Iris-Versicolor和Iris-Virginica两类分开。