2015-08-26 67 views
5

我遇到的Apache Spark問題之一是可視化決策樹。反饋:Apache Spark決策樹的可視化

我可以使用DecisionTree.trainClassifier生成一棵樹。 我可以用得到一些基本的輸出:

print(model.toDebugString()) 

但理想情況下,電流輸出:

If (feature 0 <= -35.0) 
    If (feature 24 <= 176.0) 
    Predict: 2.1 
    If (feature 24 = 176.0) 
    Predict: 4.2 
    Else (feature 24 > 176.0) 
    Predict: 6.3 
Else (feature 0 > -35.0) 
    If (feature 24 <= 11.0) 
    Predict: 4.5 
    Else (feature 24 > 11.0) 
    Predict: 10.2 

可以像JSON輸出,或什麼可分析的,這樣我們就可以層中的D3可視化圖書館。使用上面的例子...

{ 
"node": [ 
    { 
     "name":"node1", 
     "rule":"feature 0 <= -35.0", 
      "children":[ 
       { 
        "name":"node2", 
        "rule":"feature 24 <= 176.0", 
        "children":[ 
         { 
         "name":"node4", 
         "rule":"feature 20 < 116.0", 
         "predict": 2.1 
         }, 
         { 
         "name":"node5", 
         "rule":"feature 20 = 116.0", 
         "predict": 4.2 
         }, 
         { 
         "name":"node5", 
         "rule":"feature 20 > 116.0", 
         "predict": 6.3 
         } 
        ]      
       }, 
       { 
       "name":"node3", 
       "rule":"feature 0 > -35.0", 
        "children":[ 
         { 
         "name":"node7", 
         "rule":"feature 3 <= 11.0", 
         "predict": 4.5 
         }, 
         { 
         "name":"node8", 
         "rule":"feature 3 > 11.0", 
         "predict": 10.2 
         } 
        ]           
       } 

      ] 
    } 
] 

}

+4

什麼是你的問題? –

+0

我不知道有任何直接從模型中獲取決策規則的方法,但是您可以保存它並讀取數據文件以獲得易於處理的表示形式。你可以在我的答案[這裏]找到一個例子(http://stackoverflow.com/a/31975050/1560062)。 – zero323

+2

您也可以從model.rootNode開始,將其轉換爲InternalNode並訪問leftChild,rightChild等。從那裏你可以生成類似於你的JSON。 – pzecevic

回答

2

我碰到這個項目Decision-Tree-Visualization-Spark來可視化決策樹模型

它有兩個步驟

  • 解析星火決策樹輸出格式爲JSON
  • 使用JSON文件作爲D3.js可視化文件的輸入。

解析器檢查Dt.py

的輸入功能def tree_json(tree)是你的模型toDebugString()