标签:Python,Matplotlib,决策树
有时候,我们可能想用Python绘制决策树,以了解算法如何拆分数据。决策树可能是最“易于理解”的机器学习算法之一,因为我们可以看到如何正确地作决策。
本文介绍如何用Python绘制决策树。
库
首先,需要确保已经安装了下面的3个库:
1.skearn——一个流行的Python机器学习库
2.matplotlib——图表库
3.graphviz——另一个用于绘制决策树的图表库
可以使用下面的命令安装:
pip install sklearn matplotlib graphviz
数据集
Iris花数据集是研究机器学习的常用数据集。该数据集是由英国统计学家和生物学家罗纳德·费舍尔于1936年提出的。
该数据集包含3种不同类型的Iris花(Setosa、Versicolor和Virginica)的花瓣和萼片长度和宽度。每种类型的Iris有50个样本。
sklearn库包括一些供人们使用的玩具数据集,Iris就是其中之一。可以按如下方式导入Iris数据集:
from sklearn.datasets import load_iris
iris = load_iris()
iris.keys()
如下图1所示。
图1
load_iris()实际上返回了一个字典,其中包含有关iris花数据集的多个相关信息:
- data:数据本身,即4个特征
- target:每个样本的标签(0-setosa,1-versicolor,2-virginica)
- target_names:实际的花名称
- feature_names:四个特征的名称,(‘萼片长度(cm)’、‘萼片宽度(cm)’、‘花瓣长度(cm)’、‘花瓣宽度(cm)’)
要访问iris数据集(字典)中的每个项目,可以使用索引或“点”符号。
图2
如下图3所示,数据集包含4个特征,所有数据均为数值。通过学习数据集中呈现的模式,我们希望在给定花瓣和萼片长度和宽度时预测Iris类型。这里将使用决策树分类器(Decision Tree Classifier)模型。
图3
将变量X赋值给特征(features),y赋值给目标(target)。然后将数据拆分为训练数据集和测试数据集。random_state=0将使模型结果可重新生成,这意味着在自己的计算机上运行代码将生成与我们在此处(上图3)显示的相同的结果。
决策树分类器(Decision Tree Classifier)
分类器是一种机器学习算法,用于为输入数据赋值类别标签。例如,如果我们将这四个特征输入分类器,那么它将向我们返回三种Iris类型中的一种。
sklearn库使创建决策树分类器变得非常容易。fit()方法是“训练”部分,基本上使用特征和目标变量来构建决策树并从数据模式中学习。
图4
现在我们有了一个决策树分类器模型,有几种方法可以可视化它。
使用sklearn进行简单可视化
sklearn库提供了决策树的超简单可视化。可以在sklearn.tree模块中调用export_text()方法。
图5
使用Matplotlib绘制决策树
sklearn.tree模块有一种plot_tree方法,实际上在后台使用matplotlib绘制决策树。
图6
下图7更好看,每个节点中已经有一个树状图,其中包含一些有用的数据。
图7
绘制特征重要性
模型特征重要性告诉我们在进行这些决策拆分时哪个特征最重要。可以通过调用.feature_importances_属性来查看重要性排序。注意,这些因子的顺序与feature_names的顺序相匹配。在我们的示例中,显示花瓣宽度(petal width)是分割的最重要决定。
图8
可以使用matplotlib水平条形图来绘制特征重要性,使其更具视觉效果。
图9
效果如下图10所示。
图10
注:本文学习整理自pythoninoffice.com,供有兴趣的朋友参考。