2014-09-03 198 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