前一篇文章主要讲述了第三章的前部分,主要是决策树的算法实现部分
这一部分,因为篇幅较长,我们单独将他们分出来。包括:决策树可视化和分类预测
=======================================================================
matplotlib的文本注释绘制树节点
使用了Matplotlib中的annotate工具
import matplotlib.pyplot as plt
decisionNode=dict(boxstyle="sawtooth",fc="0.8")
leafNode=dict(boxstyle="round4",fc="0.8")
arrow_args=dict(arrowstyle="<-")
#设置三种类型
def plotNode(nodeTxt,centerPt,parentPt,nodeType):
#四个参数应该对应的的是:节点文本、中心坐标、父节点坐标、节点类型
createPlot.ax1.annotate(nodeTxt,xy=parentPt,xycoords='axes fraction',xytext=centerPt,\
textcoords='axes fraction',va="center",ha="center",bbox=nodeType,\
arrowprops=arrow_args)
def createPlot():
fig=plt.figure(1,facecolor='white')
fig.clf()
createPlot.ax1=plt.subplot(111,frameon=False)
plotNode(U'决策节点',(0.5,0.1),(0.1,0.5),decisionNode)
plotNode(U'叶节点',(0.8,0.1),(0.3,0.8),leafNode)
#绘制两个节点
plt.show()
节点文本没有显示出来
- 获取叶子节点
方法与学习数据结构中的二叉树叶子节点的方法一样。只是决策树内一个节点有很多个分支
def getNumLeafs(myTree):
numLeafs=0
firstStr=list(myTree.keys())[0]
#对于本例中的存储方式,k