如何使用graph()或tograph()在WEKA中显示决策树的图形(ascii文本图形)表示

时间:2011-02-01 02:04:24

标签: java graph weka

我正在尝试使用我自己的程序中的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东西,但我从未熟悉它。

有没有一种简单的方法可以编写一个函数来以更易读的格式显示它?

1 个答案:

答案 0 :(得分:2)

您获得的输出是所谓的“点”格式,旨在由graphviz编译。你会得到比ASCII艺术更好的结果,这是肯定的。

将文件保存在out.dot中,然后尝试以下命令:

$ dot -Tpng -oout.png out.dot 

然后看看你在out.png中得到了什么