使用插入符号包运行 cforest with controls = cforest_unbiased()

标签 r random-forest r-caret

我想使用 caret 包运行一个无偏见的 cforest。这可能吗?

tc <- trainControl(method="cv",
               number=f,
               index=indexList,
               savePredictions=T,
               classProbs = TRUE,
               summaryFunction = twoClassSummary)
createCfGrid <- function(len, data) {
    g = createGrid("cforest", len, data)
    g = expand.grid(.controls = cforest_unbiased(mtry = 5, ntree = 1000))
    return(g)
}
set.seed(1)
(cfMatFit <- train(as.factor(f1win) ~ .,
                   data=df,
                   method="cforest",
                   metric="ROC",
                   trControl=tc,
                   tuneGrid = createCfGrid))

错误是 Error in as.character.default(<S4 object of class "ForestControl">) : no method for coercing this S4 class to a vector
这是因为无法将 cforest_control() 强制转换为数据帧。如果我使用,该功能确实有效:
...
g = expand.grid(.mtry = 5)
...

但是,如果我想更改 ntree,这不起作用:
...
g = expand.grid(.mtry = 5, .ntree = 1000)
...

这不会像 randomForest 那样出错。

最佳答案

网格应该是一个简单的数据框,其中有一列名为 .mtry .编码

 g = createGrid("cforest", len, data)

会为你生成那个。如果要指定 ntree您只需通过 controls对象 in 作为 train 的另一个参数但忽略 mtry :
 mod <- train(Species ~ ., data = iris,
              method = "cforest",
              controls = cforest_unbiased(ntree = 10))
caret照顾变化mtry为你。

最大限度

关于使用插入符号包运行 cforest with controls = cforest_unbiased(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20337137/

相关文章:

R 和传单绘制的圆半径不正确?

apache-spark - 处理 spark mllib 分类器中的 null/NaN 值

r - 在 r 中预测 3 个相关结果不起作用

R : Caret how do we pass a parameter for k for kNN

r - 找到生成默认选项的 ".Rprofile"文件

r - 在R shiny 中,为什么简单适配renderUI 后会报错?

python - 随机森林分类器概率只有值 0、0.1、0.2 ... 1

r - 对于 R 中的随机森林模型,predict() 函数和 model$predicted 有什么区别?

r - 如何在 R 中获取 SVM 模型的系数和 p 值

r - 用另一个向量子集化一个向量