在前面的章节中,我们已经学过了ID3树,C4.5树和CART树的构造。如果还没有了解过这三棵决策树的话可以点击下方链接:
相关的决策树文章:
下面我们来看看在前面所生成的决策树的模样。
决策树的文字格式
决策树没有绘图之前是由一个多重字典组成,如图:
这是我们生成的决策树的文字格式,如今,我们要将其转到图像化。
决策树绘图代码
import matplotlib.pylab as plt
#用来正常显示中文
plt.rcParams['font.sans-serif']=['SimHei']
#用来正常显示负号
plt.rcParams['axes.unicode_minus']=False
def getNumLeafs(myTree):
#初始化树的叶子节点的个数
numLeafs = 0
#myTree.keys()获取树的非叶子节点’no surfacing'和‘flippers’
#list(mytree.keys()[0]获取第一个键名‘no surfacing’
firstStr = list(myTree.keys())[0]
#通过键名获取与之对应的值,即{
0:'no',1:{
'flippers':{
0:'no,1:'yes'}}}
secondDict = myTree[firstStr]
#遍历树,secondDict.keys()获取所有的键
for key in secondDict.keys():
#判断键是否为字典,键名1和其值就组成了一个字典,如果是字典则通过递归继续遍历,寻找叶子节点
if type(secondDict[key]).__name__=='dict':
numLeafs += getNumLeafs(secondDict[key])
#如果不是字典,则叶子节点的数目就加1
else:
numLeafs += 1
#返回叶子节点的数目