2

我在party R 包中使用 ctree 函数。我想确定树中使用的所有预测变量,以减少用于进一步分析的 data.frame 维度。例如:

library(ctree)
data(ozone)
myModel<-ctree(Ozone~., data=na.omit(airquality))
plot(myModel)

我想要一个接收 myModel 并返回 Temp、Wind 和 Ozone 的函数

4

2 回答 2

4

只是为了完整性:NicE 的答案与包中的ctree()实现有关party。如果有人想基于partykit包中的新(和推荐)实现来做同样的事情,那么需要一个不同的功能,因为内部表示完全改变了。

getUsefulPredictors <- function(x) {
  varid <- nodeapply(x, ids = nodeids(x),
    FUN = function(n) split_node(n)$varid)
  varid <- unique(unlist(varid))
  names(data_party(x))[varid]
}

varid这首先从树的每个节点中的每个拆分中获取变量 ID 。然后获取模型框架的名称并返回与唯一变量 ID 相关的名称。在您的示例中:

library("partykit")
myModel <- ctree(Ozone ~ ., data = na.omit(airquality))
getUsefulPredictors(myModel)    
## [1] "Temp" "Wind"
于 2015-04-01T06:48:53.540 回答
1

你可以尝试使用这个:

getUsefulPredictors<-function(x){
  flatTree<-unlist(x@tree)
  pred<-unique(flatTree[grepl("*variableName",names(flatTree))])
  return(pred)
}

它使树木变平并寻找以variableName它们的名字命名的元素

在您的模型上运行它返回:

getUsefulPredictors(myModel)
#[1] "Temp" "Wind"
于 2015-02-11T15:08:50.857 回答