怎么样使用Python Matplotlib绘制决策树

2022-11-16 10:55:15 浏览数 (1)

标签: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,供有兴趣的朋友参考。

0 人点赞