r caretEnsemble - 将拟合参数传递给 caretList 中的一个特定模型
r caretEnsemble - passing a fit param to one specific model in caretList
我有一些代码适合一些数据的几个(交叉验证)模型,如下所示。
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()
,这将流向 gbm
。但是当我在 caretList
中尝试时,这会引发错误。
所以我想将 verbose=FALSE
(或理论上的任何其他适合参数)专门传递给 caretList
的 methodList
中的一个特定模型。我怎样才能做到这一点?
好的,这实际上在文档中得到了很好的解决。
?caretList
包括:
tuneList: optional, a NAMED list of caretModelSpec objects. This is
much more flexible than methodList and allows the specificaiton of
model-specific parameters
而且我已经确认我的问题已解决,如果不是:
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)
我有一些代码适合一些数据的几个(交叉验证)模型,如下所示。
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()
,这将流向 gbm
。但是当我在 caretList
中尝试时,这会引发错误。
所以我想将 verbose=FALSE
(或理论上的任何其他适合参数)专门传递给 caretList
的 methodList
中的一个特定模型。我怎样才能做到这一点?
好的,这实际上在文档中得到了很好的解决。
?caretList
包括:
tuneList: optional, a NAMED list of caretModelSpec objects. This is much more flexible than methodList and allows the specificaiton of model-specific parameters
而且我已经确认我的问题已解决,如果不是:
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)