我已经使用J48构建了一个RWeka决策树。我想将其性能与描述现有(外部计算的)决策树的决策树进行比较。我是RWeka新手,我很难手动创建RWeka决策树。理想情况下,我希望将两者并排显示,并使用RWeka可视化来绘制它们(它非常信息丰富且干净)。
现在,我将将RWeka计算决策树导出到Graphviz,并将其操作到我想要的结构中。我想在开始之前检查一下,并确保我不能简单地指定我想要手动指定决策树的规则。
我不想计算决策树(我已经这样做了),我想手动构建/指定一个决策树(用于在我的演示中进行统一的比较)。
谢谢你的进阶。
发布于 2015-06-19 06:59:55
RWeka包本身无法做到这一点。然而,RWeka使用partykit包来显示它的树,这些树可以做您想做的事情。查看vignette(“partykit“, package = “partykit“),如何使用预先指定的partysplit来构造递归partysplit对象,然后将它们转换为constparty。这个小插曲有一个实际的例子。
发布于 2015-06-19 18:27:12
下面是@Achim Zeileis建议的包@Achim Zeileis的一些示例代码。
library(partykit)加载数据:
data("WeatherPlay", package = "partykit")
WeatherPlay
# outlook temperature humidity windy play
# 1 sunny 85 85 false no
# 2 sunny 80 90 true no
# 3 overcast 83 86 false yes
# 4 rainy 70 96 false yes
# 5 rainy 68 80 false yes
# 6 rainy 65 70 true no
# 7 overcast 64 65 true yes
...初始化决策:整数1L表示未指定的数据帧的列,此拆分适用于该数据帧。索引对应于一个因子的水平(离散分裂),而间断对应于一个截止(连续分裂)。
sp_o <- partysplit(1L, index = 1:3)
sp_h <- partysplit(3L, breaks = 75)
sp_w <- partysplit(4L, index = 1:2)将决策纳入节点:
pn <- partynode(1L, split = sp_o, kids = list(
partynode(2L, split = sp_h, kids = list(
partynode(3L, info = "yes"),
partynode(4L, info = "no"))),
partynode(5L, info = "yes"),
partynode(6L, split = sp_w, kids = list(
partynode(7L, info = "yes"),
partynode(8L, info = "no")))))将数据匹配到树中:
t2 <- party(pn,
data = WeatherPlay,
fitted = data.frame(
"(fitted)" = fitted_node(pn, data = WeatherPlay),
"(response)" = WeatherPlay$play, # response variable
check.names = FALSE),
terms = terms(play ~ ., data = WeatherPlay),
)
t3 <- as.constparty(t2)
plot(t3)来源:http://cran.r-project.org/web/packages/partykit/vignettes/partykit.pdf

https://stackoverflow.com/questions/30928998
复制相似问题