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
}
]
}
]
}
]
}
Jakie jest Twoje pytanie? –
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
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