2017-05-18 51 views
0

我想用rpart和partykit构建一个分类决策树,并且我想知道这些包(或任何包,就此而言)中是否有任何函数允许我创建一个包含来自特定子树或分支的数据的数据集?R-从特定分支中提取数据的决策树

我知道我可以使用DT规则手动创建原始数据集的子集,但我试图自动执行某个过程,并发现该功能将对我有很大的帮助。

例子:

library (rpart) 
library(partykit) 

data("Titanic", package = "datasets") 
ttnc <- as.data.frame(Titanic) 
ttnc <- ttnc[rep(1:nrow(ttnc), ttnc$Freq), 1:4] 
names(ttnc)[2] <- "Gender" 

rp <- rpart(Survived ~ Gender + Age + Class, data = ttnc) 
prp <- as.party(rp) 

prp[5] 

比方说从子树#5,我想提取数据,有那些允许我这样做包内的任何功能?

谢谢!

回答

2

除了张贴@JakobGepp的解决方案,您可以使用partykit提供的data_party()功能:

data_party(prp, id = 5) 

从本质上讲,这确实是内部雅各布用手明确地做同样的事情。

+0

谢谢!这非常有帮助! –

+0

非常欢迎。如果我和雅各布的回答对你有用,请考虑提高他们:-) –

2

我不知道你是否通过使用DT规则来达到这个目的,但是你可以使用partykit包的predict()函数来预测节点/分支,然后根据你的子树来分割数据。

ttnc$Node <- predict(prp, newdata = ttnc, type = "node") 

subtree <- subset(ttnc, Node == 5) 
+0

谢谢!这是我正在寻找的! –