rpart получает значения для каждого листа обрезанного дерева
Я изучаю использование rpart и чувствую, что я все еще довольно сырой, и еще есть чему поучиться. Я строил это дерево по своему требованию и получил дерево. Однако мне нужно, наконец, сгруппировать мою категориальную переменную в группы, основанные на листьях дерева. Для этого мне нужно знать значения для каждого отпуска. Как я могу получить эти значения и сохранить их в переменной.
Ниже приведен пример данных и мой код -
library(rpart)
library(rpart.plot)
library(rattle)
set.seed(1200)
ibd <- sort(rep(1:15,400),decreasing = F)
type1 <- sample(1:20,6000,replace = T)
type2 <- sample(1:18,6000,replace = T)
type3 <- sample(1:30,6000,replace = T)
type4 <- sample(1:25,6000,replace = T)
type5 <- sample(1:40,6000,replace = T)
int1 <- sample(800:5000,6000,replace = T)
dat1 <- data.frame(ibd,type1,type2,type3,type4,type5,int1)
v0a <- c("type1","type2","type3","type4","type5")
str(dat1)
dat1[,v0a] <- lapply(dat1[,v0a],factor)
str(dat1)
vec1 <- c()
for (j in 1:length(v0a)) {
v3 <- paste0(v0a[j])
temp2 <- NULL
temp2 <- dlply(
smpl
, .(ibd)
, function(df) rpart(paste("int1 ~ ",v3), data=(dat1),method="anova",
control=rpart.control(minsplit=3,minbucket = 1, cp=0))
)
assign(paste0("tree_",v3),NULL)
assign(paste0("tree_",v3),temp2)
vec1 <- c(vec1,paste0("tree_",v3))
}
tree_type1[[1]][["cptable"]]
chk1a <- prune(tree_type1[[1]],cp=3.923103e-05)
fancyRpartPlot(chk1a)
chk1c <- chk1a$frame
nodes <- as.numeric(rownames(chk1a$frame))
max(rpart:::tree.depth(nodes))
#####By below I come to know how many leaves I have
leaves <- chk1a$frame$var == '<leaf>'
leaves_no <- sum(leaves)
Так что в этом случае для tree_type1 после обрезки я получаю дерево с 6 листьями. Как я могу,
Извлеките значения этих листьев и сохраните их в переменной
Ограничить дерево только 5 листьями (так, 5 групп). Для этого я понимаю, что мне нужно справиться с этим во время обрезки. Это может быть автоматизировано?
Некоторое решение и руководство по этому вопросу очень помогли бы.
Спасибо!!