代码之家  ›  专栏  ›  技术社区  ›  Max Power

r caretEnsemble-将拟合参数传递给caretList中的一个特定模型

  •  0
  • Max Power  · 技术社区  · 9 年前

    我有一些代码将几个(交叉验证)模型与一些数据相匹配,如下所示。

    library(datasets)
    library(caret)
    library(caretEnsemble)
    
    # load data
    data("iris")
    
    # establish cross-validation structure
    set.seed(32)
    trainControl <- trainControl(method="repeatedcv", 
                                 number=5, repeats=3, # 3x 5-fold CV
                                 search="random")
    
    algorithmList <- c('lda',         # Linear Discriminant Analysis 
                       'rpart' ,      # Classification and Regression Trees
                       'svmRadial')   # SVM with RBF Kernel
    
    # cross-validate models from algorithmList
    models <- caretList(Species~., data=iris, trControl=trainControl, methodList=algorithmList)
    

    到现在为止,一直都还不错。然而,如果我添加 'gbm' algorithmList ,我收到了大量无关的日志消息,因为 gbm 似乎有一个 verbose=TRUE

    根据 caret docs ,如果我在跑步 train method='gbm' caretList ),我可以简单地添加 verbose=FALSE train() .但当我尝试时,这会引发一个错误 护理列表

    所以我想通过 详细=错误 (或任何其他拟合参数,理论上)具体到一个特定模型 methodList .我如何才能做到这一点?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Max Power    9 年前

    好的,这实际上在文档中得到了很好的解决。

    ?caretList
    

    包括:

    比methodList灵活得多,并允许指定

    algorithmList <- c('lda',         # Linear Discriminant Analysis 
                       'rpart' ,      # Classification and Regression Trees
                       'svmRadial',   # SVM with RBF Kernel
                       'gbm')         # Gradient-boosted machines
    

    我使用:

    modelTypes <- list(lda      = caretModelSpec(method="lda"),
                       rpart    = caretModelSpec(method="rpart"),
                       svmRadial= caretModelSpec(method="svmRadial"),
                       gbm      = caretModelSpec(method="rf", verbose=FALSE) 
    

    …然后 models <- caretList(...

    models <- caretList(... methodList=algorithmList)
    

    models <-caretList(...  tuneList = modelTypes)