Prädiktoren aus dem ctree-Objekt extrahieren
Ich habe nachgesehenbinary tree
Klassenmethoden undWie kann man die Baumstruktur aus der ctree-Funktion extrahieren? (was hilfreich war, um die Struktur und die Slots von S4-Objekten zu verstehen), aber es ist noch unklar, wie man zu den endgültigen Prädiktoren von a kommtctree
Objekt. Zumrpart
Ich würde so etwas wie verwenden
extract_preds <- function( tt ){
leaves <- tt$frame$var == '<leaf>'
as.character( unique( tt$frame$var[ leaves==F ] ) )
}
Gibt es eine ähnliche Verknüpfung zur Verfügung, oder muss ich eine rekursive Funktion schreiben, um die zu durchlaufenctree
Objekt und extrahieren Sie die Prädiktoren? Das, oder ein Regex-Fest mit der Druckausgabe? Vielen Dank.
UPDATE: mitbaydoganmCode unten. Ich muss noch herausfinden, wie ich updaten sollres
richtig durch die Rekursionen:
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])