2015-08-26 9 views
5

Jednym z problemów, z którymi miałem do czynienia w przypadku Apache Spark, jest wizualizacja drzew decyzyjnych.Informacja zwrotna: Wizualizacja dla drzew decyzyjnych Apache Spark

Mogę wyprodukować drzewo przy użyciu DecisionTree.trainClassifier. i mogę dostać jakieś szczątkowe wyjściowe przy użyciu:

print(model.toDebugString()) 

ale idealnie prąd wyjściowy:

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 

mógłby być wyprowadzane jako JSON, lub coś parsowalnym, tak że mogliśmy warstwa wizualizacji D3 biblioteka. Korzystając z przykładu powyżej ...

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

Jakie jest Twoje pytanie? –

+0

Nie jestem świadomy żadnej bezpośredniej metody uzyskiwania reguł decyzyjnych poza model, ale można go zapisać i czytać pliki danych, aby uzyskać łatwą obsługę. Możesz znaleźć przykład w mojej odpowiedzi [tutaj] (http://stackoverflow.com/a/31975050/1560062). – zero323

+2

Możesz także uruchomić z mode.rootNode, przesłać go do InternalNode i uzyskać dostęp do leftChild, rightChild i tak dalej. Stamtąd możesz wygenerować JSON podobny do twojego. – pzecevic

Odpowiedz

2

natknąłem tego projektu Decision-Tree-Visualization-Spark do wizualizacji drzewa decyzyjnego modelu

Posiada dwa kroki

  • Parse wyjście Decyzja Spark drzewo format JSON.
  • Użyj pliku JSON jako danych wejściowych do wizualizacji D3.js.

Na czeku parsera Dt.py

Wejście do funkcji def tree_json(tree) jest twoje modele toDebugString()