Chapter3 绘制决策树

发布时间 2023-04-14 11:46:50作者: gao79138

绘制决策树


1. 概述

    我们在上个博客已经学会使用代码来构造决策树了。但是,为了让构造出来的决策树具有可读性,我们还需要绘制决策树。

2. 设定样式

# 该代码的作用是设定节点和箭头的样式
# 该代码位于treePlotter.py文件中

import matplotlib.pyplot as plt

'''
    在matplotlib中,dict函数用于定义文本框和箭头样式
    其中:boxstyle参数就代表文本框样式 fc代表颜色深度,fc越小,颜色越深
         arrowstyle参数代表箭头样式
'''
decisionNode = dict(boxstyle='sawtooth',fc='0.8')   # 决策节点的样式
leafNode = dict(boxstyle='round4',fc='0.8')     # 叶节点的样式
arrow_args = dict(arrowstyle='<-')              # 边的样式(箭头)

3. 使用annotations来绘制树节点

# 该函数的作用就是绘制树节点
# 该函数位于treePlotter.py文件中
def plotNode(nodeTxt,centerPt,parentPt,nodeType):
    # 这里的内容可以参见我的matplotlib博客:Chapter5 注解
sub_plot.annotate(nodeTxt,xy=parentPt,xycoords='axes fraction',xytext=centerPt,textcoords='axes fraction',
                 va='center',ha='center',bbox=nodeType,arrowprops=arrow_args)

4. 绘制子图并进行初步的显示

# 当frameon=True的时候, 图示会被绘制在一个patch实体上;
# 否则, 如果frameon=False, 则图示会被直接绘制在图片上.
# 这里, 讨论是否将图示绘制在一个patch实体上的意义在于,
# 当把它绘制在一个patch实体上时, 我们才可以使用facecolor, edgecolor, framealpha, fancybox等参数来设置图示的背景(不是图片的背景)的颜色, 边框颜色, 透明度, 以及形状,
# 而当frameon=False的时候这些参数就会失效.
# 以上内容来源于:https://blog.csdn.net/nankai0912678/article/details/109520614
def createPlot():
    fig = plt.figure(1,facecolor='white')
    fig.clf()
    global sub_plot
    sub_plot = plt.subplot(111,frame_on=False)    # 创建子图
    plotNode('decision Node',(0.5,0.1),(0.1,0.5),decisionNode)    # 绘制树节点
    plotNode('leaf Node',(0.8,0.1),(0.3,0.8),leafNode)            # 同上
    plt.show()

img

    我们学会了如何绘制节点后,接下来我们就来绘制整棵树。