2015-08-26 27 views
5

Uno dei problemi che ho incontrato con Apache Spark è la visualizzazione di Decision Trees.Feedback: visualizzazione per gli alberi decisionali Apache Spark

Posso produrre un albero utilizzando DecisionTree.trainClassifier. e posso ottenere qualche uscita rudimentale utilizzando:

print(model.toDebugString()) 

Ma idealmente, l'uscita in corrente:

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 

potrebbe essere uscita come JSON, o qualcosa da interpretare, in modo da poter strato in una visualizzazione D3 biblioteca. Utilizzando l'esempio precedente ...

{ 
"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

Qual è la tua domanda? –

+0

Non sono a conoscenza di alcun metodo diretto per ottenere regole decisionali dal modello, ma è possibile salvarlo e leggere i file di dati per ottenere una rappresentazione facile da gestire. Puoi trovare un esempio nella mia risposta [qui] (http://stackoverflow.com/a/31975050/1560062). – zero323

+2

È anche possibile iniziare da model.rootNode, eseguirne il cast in InternalNode e accedere a leftChild, rightChild e così via. Da lì puoi generare JSON simile al tuo. – pzecevic

risposta

2

mi sono imbattuto in questo progetto Decision-Tree-Visualization-Spark per la visualizzazione di decisione Albero modello

Ha due passi

  • Parse uscita decisione Spark Albero a un formato JSON.
  • Utilizzare il file JSON come input per una visualizzazione D3.js.

Per il controllo parser Dt.py

L'input per la funzione def tree_json(tree) è tuoi modelli toDebugString()