R-中的决策树从特定分支中提取数据

时间:2017-05-18 19:07:37

标签: decision-tree extraction rpart party

我正在尝试使用rpart和partykit构建分类决策树,我想知道这些包中是否有任何函数(或任何包,就此而言)允许我创建包含来自特定子树的数据的数据集还是分店?

我知道我可以使用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 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

除了@JakobGepp发布的解决方案之外,您还可以使用data_party()提供的partykit功能:

data_party(prp, id = 5)

从本质上讲,这在内部做了同样的事情,雅各布手工明确地做了。