这是@Achim Zeileis 建议的包partykit 的一些示例代码。
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