来自JAVA的WEKA决策树不是可读格式

时间:2018-04-17 15:15:42

标签: java weka graphviz

我正在尝试从JAVA程序打印树。这是我得到的结果。我知道它采用“点”格式,我可以使用Graphviz将其转换为图形格式,但即使我使用Graphviz,我仍然可以使N28c97a5这些奇怪的字符仍然是我图形的一部分。如何将其转换为ASCII?

我想得到这样的东西

RandomTree

attribute_2 < 1759.5
|   attribute_2 < 1638.5
|   |   attribute_3 < 1656.5
|   |   |   attribute_0 < 2027.5 : A (6/0)
|   |   |   attribute_0 >= 2027.5 : B (3/0)
|   |   attribute_3 >= 1656.5 : A (28/0)
|   attribute_2 >= 1638.5

但我实际上得到了这个

digraph Tree {
edge [style=bold]
N28c97a5 [label="1: A"]
N28c97a5->N6659c656 [label="attribute_2 < 1978"]
N28c97a5->N6d5380c2 [label="attribute_2 >= 1978"]
N6d5380c2 [label="2: A"]
N6d5380c2->N45ff54e6 [label="attribute_3 < 1682"]
N45ff54e6 [label="3: B"]
N45ff54e6->N2328c243 [label="attribute_3 < 1595"]
N45ff54e6->Nbebdb06 [label="attribute_3 >= 1595"]
Nbebdb06 [label="4: B"]
Nbebdb06->N7a4f0f29 [label="attribute_3 < 1676.5"]
N7a4f0f29 [label="5: B"]
N7a4f0f29->N45283ce2 [label="attribute_0 < 2010.5"]
N45283ce2 [label="6: B"]
N45283ce2->N2077d4de [label="attribute_3 < 1622.5"]
N2077d4de [label="7: B"]
N2077d4de->N7591083d [label="attribute_1 < 2112.5"]
N2077d4de->N77a567e1 [label="attribute_1 >= 2112.5"]
N45283ce2->N736e9adb [label="attribute_3 >= 1622.5"]
N7a4f0f29->N6d21714c [label="attribute_0 >= 2010.5"]
Nbebdb06->N108c4c35 [label="attribute_3 >= 1676.5"]
N6d5380c2->N4ccabbaa [label="attribute_3 >= 1682"]

}

1 个答案:

答案 0 :(得分:0)

toGraph方法以Graphviz格式生成输出,适合使用Graphviz的dot程序生成树的图像。

RandomTree分类器生成您在Weka GUI输出窗口中看到的人类可读输出的方法是toString。对于某些分类器类型,例如J48,还有一个toSummaryString方法,可能就是你想要的。

您可以在Javadoc

中查看Weka类的方法和属性