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
}
]
}
]
}
]
}
Qual è la tua domanda? –
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
È 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