Функция ctree в пакете party - как получить список переменной расщепления простым способом - PullRequest
2 голосов
/ 22 февраля 2011

Я пытаюсь получить список переменных расщепления дерева при использовании ctree.

Я нашел способ получить конкретную переменную расщепления определенного узла с помощью psplit.Но я хотел бы получить весь список переменных расщепления во всем дереве.

Есть ли простой способ получить его?

Ответы [ 2 ]

1 голос
/ 21 марта 2014

Это сделает работу

SplittedNames <- function(ctemp ) {
  intnodes <- unique(where(ctemp))
  intnodes <- sort(intnodes)
  diffnodes <- seq(1:intnodes[length(intnodes)])
  primenodes <- setdiff(diffnodes,intnodes)
  split.names <- vector()

  for (i in primenodes){
    temp <- unlist(nodes(ctemp,i)[[1]][[5]])
    split.names <- append(split.names, as.character(temp[length(temp)]))
  }

  return(paste(unique(split.names), collapse = ', '))  
}

Проверка кода:

airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(maxsurrogate = 3))
SplittedNames(airct)
[1] "Temp, Wind"
0 голосов
/ 23 мая 2012
var.ctree<-function(fit){

  require(gdata)

  a<-capture.output(print(fit))  
  a<-a[-c(1:7)]   
  a<-trim(a)   

  v<-character()   
  for(h in 1:length(a)){
    b<-a[h]    
    b<-gsub(") ","q",b)    
    b<-gsub(")","q",b)    
    b<-gsub(" < ","q",b)    
    b<-gsub(" > ","q",b)    
    b<-gsub(" <= ","q",b)    
    b<-gsub(" <= ","q",b)    
    b<-gsub("  weights = ","q",b)    
    v[h]<-unlist(strsplit(b,"q"))[2]    
  }    
  v<-factor(v,levels=names(fit@data@get("input")))    
  v<-v[is.na(v)==FALSE]    
  tabla<-table(v)>0    
  sol<-as.numeric(table(v)>0)    
  names(sol)<-names(tabla)    
  sol    
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...