決策樹的可視化輸出


 

前面的博客里有提到決策樹,我們也了解了決策樹的構建過程,如果可以可視化決策樹,把決策樹打印出來,對我們理解決策樹的構建會有很大的幫助。這篇文章中,我們就來看下如何可視化輸出一棵決策樹。

一、安裝相應的插件

我們需要安裝Graphviz和pygraphviz,教程,這個教程里有詳細的安裝過程,這里就不贅述了。

二、運行實例

我們依然以iris數據集為例,打印輸出決策樹看下效果。

  1.  
    #coding=utf-8
  2.  
    import numpy as np
  3.  
    import pandas as pd
  4.  
    import pydotplus
  5.  
    def lrisTrain():
  6.  
    #預處理-引入鳶尾數據:
  7.  
    from sklearn.datasets import load_iris
  8.  
    iris = load_iris()
  9.  
     
  10.  
    from sklearn.cross_validation import train_test_split
  11.  
    # 把數據分為測試數據和驗證數據
  12.  
    train_data,test_data,train_target,test_target=train_test_split(iris.data,iris.target,test_size= 0.2,random_state=1)
  13.  
    #Model(建模)-引入決策樹
  14.  
    from sklearn import tree
  15.  
    #建立一個分類器
  16.  
    clf = tree.DecisionTreeClassifier(criterion= "entropy")
  17.  
    #訓練集進行訓練
  18.  
    clf.fit(train_data,train_target)
  19.  
    #畫圖方法1-生成dot文件
  20.  
    with open('treeone.dot', 'w') as f:
  21.  
    dot_data = tree.export_graphviz(clf, out_file= None)
  22.  
    f.write(dot_data)
  23.  
     
  24.  
    #畫圖方法2-生成pdf文件
  25.  
    dot_data = tree.export_graphviz(clf, out_file= None,feature_names=clf.feature_importances_,
  26.  
    filled= True, rounded=True, special_characters=True)
  27.  
    graph = pydotplus.graph_from_dot_data(dot_data)
  28.  
    ###保存圖像到pdf文件
  29.  
    graph.write_pdf( "treetwo.pdf")
  30.  
     
  31.  
    #進行預測
  32.  
    y_pred = clf.predict(test_data)
  33.  
     
  34.  
    #Verify(驗證)
  35.  
    #引入模塊
  36.  
    from sklearn import metrics
  37.  
    #法一:通過准確率進行驗證
  38.  
    print(metrics.accuracy_score(y_true =test_target,y_pred=y_pred))
  39.  
    #法二:通過混淆矩陣驗證(橫軸:實際值,縱軸:預測值)(理想情況下是個對角陣)
  40.  
    #print(metrics.confusion_matrix(y_true=test_target,y_pred=y_pred))
  41.  
    lrisTrain()

三、輸出結果

上述的兩個方法將會產生兩個文件,一個是dot文件,我們打開這個dot文件,得到的是決策樹生成的文本結構信息:

如何把它轉換成樹的圖形結構呢?

打開一個黑窗口(cmd,Anaconda prompt...都可以),先定位到生成的決策樹 treeone.dot 所在的路徑下,然后輸入命令行:dot -Tpdf treeone.dot -o treeone.pdf ,這樣就把名為treeone.dot文件在當前目錄下編譯生成了treeone.pdf文件,打開后效果如下:

生成的第二個文件treetwo.pdf就可以直接打開了,效果如下:

我們生成決策樹就是調用了export_graphviz函數,這個函數有很多參數值,可以通過設置這些參數值,控制生成節點上的輸出信息,大家可以根據自己的需求設置參數。

小結:我們這里是用sklearn中的DecisionTreeClassifier進行分類的,構建模型的時候只用到了這一棵決策樹。后面我們會將到集成學習算法xgboost算法中決策樹的可視化,xgboost是直接用它自己封裝的plot_tree這個類來進行輸出,不需要單獨安裝插件,反而更加容易可視化輸出決策樹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM