2014-09-03 195 views
2

我想绘制一个ID3模型的结果。在WEKA和R中似乎没有默认绘图模块。解析决策树(来自WEKA分类器)在R中绘图?

是否有已经制作好的代码来执行此操作? (或者,做下面的树格式有标准的名称,我可以很容易地找到一个解析器?)

下面是一些基本的代码:

# I'm getting a post from this: https://en.wikipedia.org/wiki/ID3_algorithm 


## load RWeka 
if(!require(RWeka)) install.packages("RWeka") 
library(RWeka) 
## look for a package providing id3 
WPM("refresh-cache") 
WPM("list-packages", "available") ## look for id3 
## install package providing id3 
WPM("install-package", "simpleEducationalLearningSchemes") 
## load the package 
WPM("load-package", "simpleEducationalLearningSchemes") 
## make classifier 
ID3 <- make_Weka_classifier("weka/classifiers/trees/Id3") 
## test it out. 

DF2 <- read.arff(system.file("arff", "contact-lenses.arff", 
          package = "RWeka")) 
ID3(`contact-lenses` ~ ., data = DF2) 

下面是结果:

Id3 


tear-prod-rate = reduced: none 
tear-prod-rate = normal 
| astigmatism = no 
| | age = young: soft 
| | age = pre-presbyopic: soft 
| | age = presbyopic 
| | | spectacle-prescrip = myope: none 
| | | spectacle-prescrip = hypermetrope: soft 
| astigmatism = yes 
| | spectacle-prescrip = myope: hard 
| | spectacle-prescrip = hypermetrope 
| | | age = young: hard 
| | | age = pre-presbyopic: none 
| | | age = presbyopic: none 

树结构很容易理解。有关如何解析这个问题的任何建议? (可能类似于回答from here?)

谢谢。

+1

问题似乎是其他分类器有'graph'方法,通过调用'.jcall(obj $ classifier,“S”,“图“),但这并不适用于Id3分类器。 'Id3'确实响应了'.jcall(x $分类符,“S”,“toString”)'这是用来打印你看到的树的文本版本的东西。看起来它只是不会与R共享此信息;据我所知,它全部锁定在JAVA世界。 (但我绝不是威卡的专家)。 – MrFlick 2014-09-03 20:48:58

+0

嗨@MrFlick - 谢谢,这也是我注意到的。我没有捕获文本本身的问题。但解析文本需要更多的工作(我希望依赖于相关的解析语言) – 2014-09-03 21:06:05

回答

0

可视化树的选项在Weka中已经有一段时间了。也许你正在使用旧版本? Weka 3.6和3.7附带J48。如果你只关心可视化问题,这个问题的答案会显示几种方法:Visualizing Weka classification tree