2017-05-18 48 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

謝謝!這是我正在尋找的! –