假装我已经创建了一个回归树:
library(rpart)
library(rpart.plot)
data("mtcars")
fit <- rpart(mpg~., data = mtcars)
prp(fit)
现在通过查看树,我可以理解哪些变量会使我达到最大mpg和最小值。
但是如果我有一棵大树怎么办?如何找出哪些变量值会使我获得最高结果?
答案 0 :(得分:0)
如果您只想要最高或最低,这将有效。您可以使用
在每个节点获取mpg
的值
fit$frame$yval
[1] 20.09062 16.64762 13.41429 18.26429 26.66364
每次节点分裂时,如果该节点有mpg = M,则两个分割节点将有一个高于M且一个低于M.因此,最大值和最小值都将出现在树的叶子上。所以最高的叶子是
max(fit$frame$yval)
[1] 26.66364
抱歉,我错过了这部分问题。
通过使用which.max
,我们可以确定哪个节点是最大节点。
which.max(fit$frame$yval)
[1] 5
现在我们知道它是节点5.从那里我们可以使用.list.rules.party
包中的partykit
来获取相关规则。由于.list.rules.party
未从包中导出,因此我们必须指定函数的来源。
此外,该函数仅为叶子提供规则,因此我们必须使用 name 5获取节点的规则,而不是第5条规则。
PFit = as.party(fit)
Rules = partykit:::.list.rules.party(PFit)
Rules["5"]
5
"cyl < 5"
或者你可以用
简化整个事情Rules[as.character(which.max(fit$frame$yval))]
5
"cyl < 5"
获取最小值的规则
Rules[as.character(which.min(fit$frame$yval))]
3
"cyl >= 5 & hp >= 192.5"