我正在尝试使用我自己的程序中的WEKA类显示由不同类生成的决策树。具体来说,我使用了两个不同的:J48(C4.5实现)和RandomTree。一个具有函数graph(),另一个具有toGraph()函数,它们对于各自的类似乎具有相同的功能。
因为他们都将java.lang.String显示为返回类型,所以我希望看到你在使用他们的资源管理器应用时看到的内容:
act = STRETCH
| size = SMALL
| | Color = YELLOW
| | | age = ADULT : T (1/0)
| | | age = CHILD : F (1/0)
| | Color = PURPLE
| | | age = ADULT : T (2/0)
| | | age = CHILD : F (1/0)
| size = LARGE
| | age = ADULT : T (4/0)
| | age = CHILD : F (2/0)
act = DIP : F (8/0)
相反,我得到这样的东西:
digraph Tree {
edge [style=bold]
N13aaa14a [label="1: T"]
N13aaa14a->N268b819f [label="act = STRETCH"]
N268b819f [label="2: T"shape=box]
N13aaa14a->N10eb017e [label="act = DIP"]
N10eb017e [label="3: F"]
N10eb017e->N34aeffdf [label="age = CHILD"]
N34aeffdf [label="4: F"shape=box]
N10eb017e->N4d20a47e [label="age = ADULT"]
N4d20a47e [label="5: T"shape=box]
}
这是WEKA库的独特之处还是某种标准Java格式?它看起来类似于我在另一个项目上工作的一些JSON东西,但我从未熟悉它。
有没有一种简单的方法可以编写一个函数来以更易读的格式显示它?
答案 0 :(得分:2)
您获得的输出是所谓的“点”格式,旨在由graphviz编译。你会得到比ASCII艺术更好的结果,这是肯定的。
将文件保存在out.dot
中,然后尝试以下命令:
$ dot -Tpng -oout.png out.dot
然后看看你在out.png中得到了什么