专栏首页程序猿声Python AI 教学 |决策树绘制函数介绍

Python AI 教学 |决策树绘制函数介绍

1

基本思想

前面的推文Python AI 教学 | 决策树算法及应用中我们已经介绍了如何从数据集中创建树,我们是用字典类型来存储决策树的,然而字典的表示形式非常不易于理解,决策树的主要优点就是直观易于理解,如果不能将其直观地显示出来,就无法发挥其优势。鉴于Python 并没有提供绘制树的工具,本期我们将介绍使用Matplotlib库来创建树形图。Matplotlib库是Python优秀的数据可视化第三方库,下面我们通过具体的算法实现来感受Matplotlib库的绘图魅力。

2

算法实现

1.获取决策树的叶节点数和树的层数

为保证绘制的决策树具有美观的比例和位置,我们必须要知道叶节点数和树的层数,以便正确确定x轴与y轴的长度。

【求叶子节点数】

【求树的层数】

【打印结果】

运行结果(python3):

2.图示决策树

函数说明 —— annotate

可以在数据图形上添加文本注释,内嵌支持带箭头的划线工具,使得可以在其他恰当的地方指向待注释内容。

annotate参数说明:

①xy箭头尖端坐标,即待注释的位置坐标

②xytext注释位置的坐标

③xycoords被注释点的坐标系属性,参数如下

figure points—— 以绘图区左下角为参考,单位是点数

figure pixels—— 以绘图区左下角为参考,单位是像素数

figure fraction—— 以绘图区左下角为参考,单位是百分比

axes points —— 以子绘图区左下角为参考,单位是点数(一个figure可以有多个axex,默认为1个)

axes pixels—— 以子绘图区左下角为参考,单位是像素数

axes fraction ——以子绘图区左下角为参考,单位是百分比

data ——以被注释的坐标点xy为参考 (默认值)

polar——不使用本地数据坐标系,使用极坐标系

④extcoords注释文本的坐标系属性,默认与xycoords属性值相同,也可设为不同的值。除了允许输入xycoords的属性值,还允许输入以下两种:

offset points 相对于被注释点xy的偏移量(单位是点)

offset pixels 相对于被注释点xy的偏移量(单位是像素)

⑤arrowprops 箭头参数,参数类型为字典dict

width ——点箭头的宽度

headwidth——箭头底座的宽度

headlength—— 点箭头的长度

shrink——箭头总长度从两端收缩的百分比

facecolor ——箭头颜色

⑥bbox给标题增加外框 ,常用参数如下:

boxstyle方框外形

facecolor(简写fc)背景颜色

edgecolor(简写ec)边框线条颜色

edgewidth边框线条大小

函数说明 —— text

text语法:text(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")

①x,y:表示坐标点

②string:表示注释文字

③fontsize:表示字体大小

④verticalalignment:垂直对齐方式

参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]

⑤horizontalalignment:水平对齐方式

参数:[ ‘center’ | ‘right’ | ‘left’ ]

⑥bbox给标题增加外框 ,常用参数如下:

boxstyle方框外形

facecolor(简写fc)背景颜色

edgecolor(简写ec)边框线条颜色

edgewidth边框线条大小

函数说明 —— plot

plot语法:

plot(x, y, color='green', marker='o', linestyle='dashed',linewidth=2, markersize=12)

① color:绘图颜色

② marker:绘图符号

③ linestyle:线型

④ linewidth:线宽

⑤ markersize:绘图符号大小

函数说明 —— subplot

用参数设置分区模式和当前子图,只有当前子图受到命令的影响。函数的参数有三个整数组成:第一个数字决定图形沿垂直方向被分为几部分,第二个数字决定图形沿水平方向被分为几部分,第三个数字设定可以直接用命令控制的子图.

本文分享自微信公众号 - 程序猿声(ProgramDream)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 修正重发【CPLEX教程03】JAVA调用cplex求解一个TSP模型详解

    前面我们已经搭建好cplex的java环境了,详情可以看干货 | cplex介绍、下载和安装以及java环境配置和API简单说明,相信大家已经跃跃欲试,想动手写...

    短短的路走走停停
  • Python AI 教学 | KNN算法及应用

    简单来说,KNN可以看成有一堆你已经知道其所属类别的数据(训练数据),然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个新数据最近的K个...

    短短的路走走停停
  • 爬取一定范围内的地图兴趣点并生成地点分布图

    此前我们做过相关的教程,就是利用Python调用百度地图的API接口获取相关的地图信息。比如爬取某个范围内特定的兴趣点的坐标,对两点之间进行路径规划计算行车时间...

    短短的路走走停停
  • Python AI 教学 |决策树绘制函数介绍

    前面的推文Python AI 教学 | 决策树算法及应用中我们已经介绍了如何从数据集中创建树,我们是用字典类型来存储决策树的,然而字典的表示形式非常不易于理解,...

    用户1621951
  • 【项目实战】自监控-03-列表排序

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • 深入浅出OOP(二): 多态和继承(继承)

    本文是深入浅出OOP第二篇,主要说说继承的话题。 继承的介绍 在OOP中,继承有如下的定义: 继承是一种OOP的机制,用于派生继承预定义的类 在这个继承关系中,...

    葡萄城控件
  • SAP CRM系统订单模型的设计与实现

    SAP成都研究院的一个部门领导让我给他的团队做一个SAP CRM One Order框架的培训,这是我准备的培训内容。

    Jerry Wang
  • 架构-亿级API网关之道

    三、API的生命周期:Design(设计)、Build(构建)、Test(测试)、Document(文档)、Share(发布)、run(运行)、DownLine...

    凹谷
  • linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

    随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧。在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和...

    洗尽了浮华
  • SpringBoot2.x系列教程(十一)Jackson之ObjectMapper使用详解

    上篇文章我们介绍了在Spring Boot Web中Jackson的基本使用,当使用Jackson实现Json与Bean之间转换时,最主要的类便是Jackson...

    用户1161110

扫码关注云+社区

领取腾讯云代金券