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