gpt4 book ai didi

r - 获取 rpart 节点中的观测值(即 : CART)

转载 作者:行者123 更新时间:2023-12-01 16:30:32 24 4
gpt4 key购买 nike

我想检查到达 rpart 决策树中某个节点的所有观察结果。例如,在以下代码中:

fit <- rpart(Kyphosis ~ Age + Start, data = kyphosis)
fit

n= 81

node), split, n, loss, yval, (yprob)
* denotes terminal node

1) root 81 17 absent (0.79012346 0.20987654)
2) Start>=8.5 62 6 absent (0.90322581 0.09677419)
4) Start>=14.5 29 0 absent (1.00000000 0.00000000) *
5) Start< 14.5 33 6 absent (0.81818182 0.18181818)
10) Age< 55 12 0 absent (1.00000000 0.00000000) *
11) Age>=55 21 6 absent (0.71428571 0.28571429)
22) Age>=111 14 2 absent (0.85714286 0.14285714) *
23) Age< 111 7 3 present (0.42857143 0.57142857) *
3) Start< 8.5 19 8 present (0.42105263 0.57894737) *

我想查看节点 (5) 中的所有观测值(即:Start>=8.5 & Start< 14.5 的 33 个观测值)。显然我可以手动找到它们。但我想要一些功能,例如“get_node_date”。为此,我可以运行 get_node_date(5) - 并获得相关的观察结果。

关于如何解决这个问题有什么建议吗?

最佳答案

似乎没有这样的函数可以从特定节点提取观测值。我会按如下方式解决它:首先确定您感兴趣的节点使用哪个规则。您可以使用 path.rpart 来解决它。然后,您可以一个接一个地应用规则来提取观察结果。

这种方法作为一个函数:

get_node_date <- function(tree = fit, node = 5){
rule <- path.rpart(tree, node)
rule_2 <- sapply(rule[[1]][-1], function(x) strsplit(x, '(?<=[><=])(?=[^><=])|(?<=[^><=])(?=[><=])', perl = TRUE))
ind <- apply(do.call(cbind, lapply(rule_2, function(x) eval(call(x[2], kyphosis[,x[1]], as.numeric(x[3]))))), 1, all)
kyphosis[ind,]
}

对于节点 5,您将得到:

get_node_date()

node number: 5
root
Start>=8.5
Start< 14.5
Kyphosis Age Number Start
2 absent 158 3 14
10 present 59 6 12
11 present 82 5 14
14 absent 1 4 12
18 absent 175 5 13
20 absent 27 4 9
23 present 96 3 12
26 absent 9 5 13
28 absent 100 3 14
32 absent 125 2 11
33 absent 130 5 13
35 absent 140 5 11
37 absent 1 3 9
39 absent 20 6 9
40 present 91 5 12
42 absent 35 3 13
46 present 139 3 10
48 absent 131 5 13
50 absent 177 2 14
51 absent 68 5 10
57 absent 2 3 13
59 absent 51 7 9
60 absent 102 3 13
66 absent 17 4 10
68 absent 159 4 13
69 absent 18 4 11
71 absent 158 5 14
72 absent 127 4 12
74 absent 206 4 10
77 present 157 3 13
78 absent 26 7 13
79 absent 120 2 13
81 absent 36 4 13

关于r - 获取 rpart 节点中的观测值(即 : CART),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36748531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com