【问题标题】:Run cforest with controls = cforest_unbiased() using caret package使用 caret 包运行带有 controls = cforest_unbiased() 的 cforest
【发布时间】:2013-12-18 16:23:27
【问题描述】:

我想使用 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 那样出错。

【问题讨论】:

  • 你也应该用 [caret] 标记它。

标签: r random-forest r-caret


【解决方案1】:

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

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

将为您生成。如果您想指定ntree,您只需将controls 对象作为另一个参数传递给train,但忽略mtry

 mod <- train(Species ~ ., data = iris,
              method = "cforest",
              controls = cforest_unbiased(ntree = 10))

caret 负责为您更改 mtry

最大

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-14
    • 2016-07-04
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多