Sounds good. It's a request I have seen a few times in the past and have needed it personally. May be Joseph Bradley has something to add.
I think a JIRA to capture this will be great. We can move this discussion to the JIRA then. On Friday, August 28, 2015, Cody Koeninger <c...@koeninger.org> wrote: > I wrote some code for this a while back, pretty sure it didn't need access > to anything private in the decision tree / random forest model. If people > want it added to the api I can put together a PR. > > I think it's important to have separately parseable operators / operands > though. E.g > > "lhs":0,"op":"<=","rhs":-35.0 > On Aug 28, 2015 12:03 AM, "Manish Amde" <manish...@gmail.com > <javascript:_e(%7B%7D,'cvml','manish...@gmail.com');>> wrote: > >> Hi James, >> >> It's a good idea. A JSON format is more convenient for visualization >> though a little inconvenient to read. How about toJson() method? It might >> make the mllib api inconsistent across models though. >> >> You should probably create a JIRA for this. >> >> CC: dev list >> >> -Manish >> >> On Aug 26, 2015, at 11:29 AM, Murphy, James <james.mur...@disney.com >> <javascript:_e(%7B%7D,'cvml','james.mur...@disney.com');>> wrote: >> >> Hey all, >> >> >> >> In working with the DecisionTree classifier, I found it difficult to >> extract rules that could easily facilitate visualization with libraries >> like D3. >> >> >> >> So for example, using : print(model.toDebugString()), I get the following >> result = >> >> >> >> 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 >> >> >> >> But ideally, I could see results in a more parseable format like JSON: >> >> >> >> { >> >> "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 >> >> } >> >> ] >> >> } >> >> >> >> ] >> >> } >> >> ] >> >> } >> >> >> >> Food for thought! >> >> >> >> Thanks, >> >> >> >> Jim >> >> >> >>