Python--《机器学习实战》学习笔记之决策树--利用Matplotlib注解绘制树形图

本文是《机器学习实战》学习笔记的一部分,主要介绍如何利用Matplotlib的annotations工具绘制决策树。通过创建绘图区、递归遍历获取叶子节点数和树的深度、绘制带箭头的注解以及键值标注,详细展示了决策树的绘制过程。
摘要由CSDN通过智能技术生成

从机器学习的门缝开始窥了那一眼

利用Matplotlib注解绘制树形图

Matplotlib注解工具—annotations
此模块运用了一个非常重要的技术
将一些对象和变量作为函数的属性在函数的外部进行初始化
由于其全局的特性,使得在整个递归过程中,任意过程对这些变量的修改
都会反馈到程序后续的运行过程中
----比如:外层栈堆对变量的修改会进入内层栈堆
--------内层栈堆对变量的修改在出栈之后同样会反馈到外层栈堆
注意:本节使用的是以叶子节点数和树的层数的比例绘制决策树
好处:当决策树发生变化的时候,绘制方案会同步变化

一.创建绘图区,并调度绘图函数

from matplotlib import pyplot as plt

def create_plot(in_tree):
	"""
	in_tree:字典形式的决策树结构
	"""
    # figure:图形,数字,创建一个图形实例
    # num = None:1-N,如果不提供,则增加figure的计数数值,如果提供,则在已存在中寻找,未找到创建,如果是字符串,则设置成窗口名
    # figsize = None:以英寸为单位的宽高,缺省值为figure.figsize
    # dpi = None:图形分辨率,缺省值为figure.dpi
    # facecolor = None,背景色
    # edgecolor = None,边框颜色
    # frameon = True,默认值True为绘制边框,如果为False则不绘制边框
    # FigureClass = Figure,matplotlib.figure.Figure派生类,从派生类创建figure实例
    # clear = False,重建figure实例
    fig = plt.figure(1, facecolor='white')
    # 清除图形
    fig.clf()
    axprops = dict(xticks=[], yticks=[])  # 定义横纵坐标轴,无内容
    # subplot是将多个图画到一个平面上的工具
    # 参数;
    # m:
    # n:
    # m和n代表在一个图像窗口中显示m行n列个图像
    # p:p表示图所在的位置,p=1表示从左到右从上到下的第一个位置
    #  frameon=False),添加没有框架的子图
    # 定义一个全局绘图区:create_plot.ax1
    # 给函数绑定属性,则函数全局可以使用这些属性
    # ax1---全局的图像对象
    create_plot.ax1 = plt.subplot(111, frameon=False, **axprops)  # 绘制图像,无边框,无坐标轴
    plot_tree.total_w = float(get_num_leafs(in_tree))  # 获取总宽度
    plot_tree.total_d = float(get_tree_depth(in_tree))  # 获取总高度
    # (1 / plot_tree.total_w)---叶子节点能占有的宽度
    # 为了让叶子节点在其拥有宽度的区域居中
    # 故向左移动其所占有宽度一般
    # x_off:居中对齐的节点坐标偏移量
    plot_tree.x_off = -0.5 / plot_tree.total_w
    # 定义树的高度
    plot_tree.y_off = 1.0
    # 绘制决策树--头像是1x1,所以(0.5,1.0)---根节点的坐标--横轴居中
    plot_tree(in_tree, (0.5, 1.0), "")  # 无键值,故给出 ""
    plt.show
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值