我在派對R包中使用了ctree函數。我想確定樹中使用的所有預測變量,以便減少用於進一步分析的data.frame維度。例如:識別派對節點中的所有不同變量1
library(ctree)
data(ozone)
myModel<-ctree(Ozone~., data=na.omit(airquality))
plot(myModel)
我想一個函數接收基於myModel和返回溫度,風和臭氧
我在派對R包中使用了ctree函數。我想確定樹中使用的所有預測變量,以便減少用於進一步分析的data.frame維度。例如:識別派對節點中的所有不同變量1
library(ctree)
data(ozone)
myModel<-ctree(Ozone~., data=na.omit(airquality))
plot(myModel)
我想一個函數接收基於myModel和返回溫度,風和臭氧
您可以嘗試使用此:
getUsefulPredictors<-function(x){
flatTree<-unlist([email protected])
pred<-unique(flatTree[grepl("*variableName",names(flatTree))])
return(pred)
}
它展平了樹和查找元素在其名下有variableName
在您的模型上運行它返回:
getUsefulPredictors(myModel)
#[1] "Temp" "Wind"
僅爲了完整:NicE的答案與party
包中的ctree()
實現相關。如果有人想根據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]
}
這首先從樹的每個節點的每個分割中獲得變量ID varid
。然後獲得模型框架的名稱,並返回與唯一變量ID有關的名稱。在你的例子中:
library("partykit")
myModel <- ctree(Ozone ~ ., data = na.omit(airquality))
getUsefulPredictors(myModel)
## [1] "Temp" "Wind"