извлечение предикторов из объекта ctree
Я проверилbinary tree
методы класса иКак извлечь древовидную структуру из функции ctree? (что помогло понять структуру объекта S4 и слоты), но до сих пор неясно, как добраться до окончательных предикторовctree
объект. Заrpart
Я бы использовал что-то вроде
extract_preds <- function( tt ){
leaves <- tt$frame$var == '<leaf>'
as.character( unique( tt$frame$var[ leaves==F ] ) )
}
Имеется ли аналогичный ярлык или мне нужно написать рекурсивную функцию для обходаctree
возразить и извлечь предикторы? Это или regex-fest с выводом на печать? Благодарю.
ОБНОВЛЕНИЕ: использованиеbaydoganmкод ниже. Еще надо выяснить как обновитьres
правильно через рекурсии:
library(party)
ctree_preds <- function(tr,vnames){
res <- character(0)
traverse <- function(treenode,vnames,res){
if(treenode$terminal){
return(res)
} else {
res <- c(res,vnames[treenode$psplit$variableID])
traverse(treenode$left , vnames, res )
traverse(treenode$right, vnames, res )
}
}
traverse(tr,vnames,res)
return(unique(res))
}
airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq,
controls = ctree_control(maxsurrogate = 3))
plot(airct)
ctree_preds(airct@tree,names(airq)[-1])