-
大小: 3KB文件類型: .rar金幣: 2下載: 0 次發布日期: 2021-05-10
- 語言: 其他
- 標簽: treePlotter.??
資源簡介
treePlotter模塊,其實就是一系列函數組成的自定義模塊,資源包括該模塊的代碼具體實現代碼,用于實現樹與分類結構的可視化

代碼片段和文件信息
#?_*_?coding:?UTF-8?_*_
import?matplotlib.pyplot?as?plt
“““繪決策樹的函數“““
decisionNode?=?dict(boxstyle=“sawtooth“?fc=“0.8“)??#?定義分支點的樣式
leafNode?=?dict(boxstyle=“round4“?fc=“0.8“)??#?定義葉節點的樣式
arrow_args?=?dict(arrowstyle=“<-“)??#?定義箭頭標識樣式
#?計算樹的葉子節點數量
def?getNumLeafs(myTree):
???numLeafs?=?0
???firstStr?=?list(myTree.keys())[0]
???secondDict?=?myTree[firstStr]
???for?key?in?secondDict.keys():
??????if?type(secondDict[key]).__name__?==?‘dict‘:
?????????numLeafs?+=?getNumLeafs(secondDict[key])
??????else:
?????????numLeafs?+=?1
???return?numLeafs
#?計算樹的最大深度
def?getTreeDepth(myTree):
???maxDepth?=?0
???firstStr?=?list(myTree.keys())[0]
???secondDict?=?myTree[firstStr]
???for?key?in?secondDict.keys():
??????if?type(secondDict[key]).__name__?==?‘dict‘:
?????????thisDepth?=?1?+?getTreeDepth(secondDict[key])
??????else:
?????????thisDepth?=?1
??????if?thisDepth?>?maxDepth:
?????????maxDepth?=?thisDepth
???return?maxDepth
#?畫出節點
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?plotMidText(cntrPt?parentPt?txtString):
???lens?=?len(txtString)
???xMid?=?(parentPt[0]?+?cntrPt[0])?/?2.0?-?lens?*?0.002
???yMid?=?(parentPt[1]?+?cntrPt[1])?/?2.0
???createPlot.ax1.text(xMid?yMid?txtString)
def?plotTree(myTree?parentPt?nodeTxt):
???numLeafs?=?getNumLeafs(myTree)
???depth?=?getTreeDepth(myTree)
???firstStr?=?list(myTree.keys())[0]
???cntrPt?=?(plotTree.x0ff?+?\
?????????????(1.0?+?float(numLeafs))?/?2.0?/?plotTree.totalW?plotTree.y0ff)
???plotMidText(cntrPt?parentPt?nodeTxt)
???plotNode(firstStr?cntrPt?parentPt?decisionNode)
???secondDict?=?myTree[firstStr]
???plotTree.y0ff?=?plotTree.y0ff?-?1.0?/?plotTree.totalD
???for?key?in?secondDict.keys():
??????if?type(secondDict[key]).__name__?==?‘dict‘:
?????????plotTree(secondDict[key]?cntrPt?str(key))
??????else:
?????????plotTree.x0ff?=?plotTree.x0ff?+?1.0?/?plotTree.totalW
?????????plotNode(secondDict[key]?\
??????????????????(plotTree.x0ff?plotTree.y0ff)?cntrPt?leafNode)
?????????plotMidText((plotTree.x0ff?plotTree.y0ff)?\
??????????????????????cntrPt?str(key))
???plotTree.y0ff?=?plotTree.y0ff?+?1.0?/?plotTree.totalD
def?createPlot(inTree):
???fig?=?plt.figure(1?facecolor=‘white‘)
???fig.clf()
???axprops?=?dict(xticks=[]?yticks=[])
???createPlot.ax1?=?plt.subplot(111?frameon=False?**axprops)
???plotTree.totalW?=?float(getNumLeafs(inTree))
???plotTree.totalD?=?float(getTreeDepth(inTree))
???plotTree.x0ff?=?-0.5?/?plotTree.totalW
???plotTree.y0ff?=?1.0
???plotTree(inTree?(0.5?1.0)?‘‘)
???plt.show()
if?__name__==‘__main__‘:
????createPlot()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3023??2018-10-18?20:59??treePlotter\__init__.py
?????文件???????3253??2018-10-18?21:10??treePlotter\__init__.pyc
?????目錄??????????0??2018-10-18?21:10??treePlotter
-----------?---------??----------?-----??----
?????????????????6276????????????????????3
評論
共有 條評論