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. ZumrpartIch 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])

Antworten auf die Frage(3)

Ihre Antwort auf die Frage