雅乐网

计算机技术、学习成长

数学 » 机器学习 » 机器学习实战3——用python画决策树

机器学习实战3——用python画决策树

《机器学习实战》第三章中使用python画决策树

plotNode

plotNode的功能是画结点和线,箭头是从 parentPt 指向 centerPt 的

plotMidText

该函数用于在线的中间写入数字

plotTree 和 createPlot

xOff

xOff和yOff用来记录当前要画的叶子结点的位置。

画布的范围x轴和y轴都是0到1,我们希望所有的叶子结点平均分布在x轴上。totalW记录叶子结点的个数,那么 1/totalW 正好是每个叶子结点的宽度

如果叶子结点的坐标是 1/totalW , 2/totalW, 3/totalW, …, 1 的话,就正好在宽度的最右边,为了让坐标在宽度的中间,需要减去0.5 / totalW 。所以createPlot函数中,初始化 plotTree.xOff 的值为-0.5/plotTree.totalW。这样每次 xOff + 1/totalW ,正好是下1个结点的准确位置

yOff

yOff的初始值为1,每向下递归一次,这个值减去 1 / totalD

cntrPt

cntrPt用来记录当前要画的树的树根的结点位置

在plotTree函数中,它是这样计算的

cntrPt = (plotTree.xOff + (1.0 + float(numLeafs))/2.0/plotTree.totalW, plotTree.yOff)

numLeafs记录当前的树中叶子结点个数。我们希望树根在这些所有叶子节点的中间。

plotTree.xOff + (1.0 + float(numLeafs))/2.0/plotTree.totalW

这里的 1.0 + numLeafs 需要拆开来理解,也就是

plotTree.xOff +  float(numLeafs)/2.0/plotTree.totalW +1.0/2.0/plotTree.totalW

plotTree.xOff +  1/2 * float(numLeafs)/plotTree.totalW + 0.5/plotTree.totalW

因为xOff的初始值是-0.5/plotTree.totalW ,是往左偏了0.5/plotTree.tatalW 的,这里正好加回去。这样cntrPt记录的x坐标正好是所有叶子结点的中心点

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/machine_learning_practice_3_python_plot_decision_tree-html.html

上一篇:

下一篇:

我要评论

验证码*: 7 + 8 =