解析决策树(来自 WEKA 分类器)以在 R 中绘图?

Posted

技术标签:

【中文标题】解析决策树(来自 WEKA 分类器)以在 R 中绘图?【英文标题】:Parsing a decision tree (from a WEKA classifier) for plotting in R? 【发布时间】:2014-10-28 10:37:12 【问题描述】:

我想绘制一个 ID3 模型的结果。它似乎在 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?)

谢谢。

【问题讨论】:

问题似乎是其他分类器有一个通过.jcall(obj$classifier, "S", "graph") 调用的graph 方法,但这不适用于Id3 分类器。 Id3 确实响应.jcall(x$classifier, "S", "toString"),这是用于打印您看到的树的文本版本的内容。看起来它只是不与 R 共享此信息;据我所知,这一切都锁定在 JAVA 世界中。 (但我绝不是 Weka 专家)。 嗨@MrFlick - 谢谢,这也是我注意到的。捕获文本本身没有问题。但是解析文本需要更多的工作(我希望依靠相关的解析语言) 【参考方案1】:

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

【讨论】:

以上是关于解析决策树(来自 WEKA 分类器)以在 R 中绘图?的主要内容,如果未能解决你的问题,请参考以下文章

R Weka J48决策树无法处理数字类

相同的决策树,不同的结果

Weka中决策树和混淆矩阵中正确/错误分类实例之间的差异

将 Mahout 模型输出导出为 Weka 输入

在 Weka 中实现元分类器的参数

C4.5 决策树:分类概率分布?