既然我們掌握了ID3的決策樹算法,但是直接看那個樹形結構可能對於很多人來說,很抽象,這里我就簡單照着機器學習實戰的書上一起來學習下,如何利用python進行繪圖操作,我們引用pyplot這個庫,這個庫來自於matplotlib;記得前面好像我也將結果如何使用這個庫來進行簡單的繪圖,連接是http://blog.csdn.net/xueyunf/article/details/9091719,
這里講解下如何進行決策樹圖的繪制,首先我們需要繪制箭頭,標注框等東西。這些可以使用annotate函數進行完成,具體參數可以查閱:
http://matplotlib.org/api/axes_api.html?highlight=annotate#matplotlib.axes.Axes.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('a decision node', (0.5, 0.1), (0.1, 0.5), decisionNode) plotNode('a leaf node', (0.8, 0.1), (0.3, 0.8), leafNode) plt.show() createPlot()
第一個函數完成 產生節點,第二個函數調用第一個函數來完成繪圖。
下面繼續程序截圖:
O(∩_∩)O~,這個貌似和書中的截圖不一樣,可以確定書中的圖經過了翻譯,但是代碼卻忘了翻譯,也許是譯者的疏忽吧,或者是翻譯過來大家好理解,但是為了尊重原作者,所以代碼沒有修改,怎么理解都好,這不重要,重點是如何完成繪圖。