尝试学习r-Caret和caretList。 我正在尝试按照教程caretEnsemble Classification example
我遇到了一些错误并搜索了如何修复一些基本设置。 但是,我收到了错误:
Warning messages:
1: In train.default(x, y, weights = w, ...) :
The metric "Accuracy" was not in the result set. ROC will be used instead.
2: In train.default(x, y, weights = w, ...) :
The metric "Accuracy" was not in the result set. ROC will be used instead.
我的设置是:
#Libraries
library(caret)
library(devtools)
library(caretEnsemble)
#Data
library(mlbench)
dat <- mlbench.xor(500, 2)
X <- data.frame(dat$x)
Y <- factor(ifelse(dat$classes=='1', 'Yes', 'No'))
#Split train/test
train <- runif(nrow(X)) <= .66
#Setup CV Folds
#returnData=FALSE saves some space
folds=5
repeats=1
myControl <- trainControl(method='cv',
number=folds,
repeats=repeats,
returnResamp='none',
classProbs=TRUE,
returnData=FALSE,
savePredictions=TRUE,
verboseIter=TRUE,
allowParallel=TRUE,
summaryFunction=twoClassSummary,
index=createMultiFolds(Y[train],
k=folds,
times=repeats)
)
#Make list of all models
all.models<-caretList(Y~., data=X, trControl=myControl, methodList=c("blackboost", "parRF"))
我编辑了&#34;训练所有模型的部分&#34;使用caretList,以便它可以与代码中的caretEnsemble和caretStack一起使用(上面提供的链接)。
如何获得精确度以便我可以在caretEnsemble和caretStack中使用它们?
答案 0 :(得分:8)
我假设您希望使用“准确度”作为摘要指标,用于在其重新采样中选择最佳基础学习者模型,稍后通过caretEnsemble
或caretStack
选择元数据。< / p>
在这种情况下,您不得在summaryFunction = twoClassSummary
中设置trainControl
,因为这样train
会将“ROC”用作效果指标,而不是“准确度”。相反,您应该使用summaryFunction
的默认设置(这意味着您不必在trainControl
中明确指定它)。像train
这样通过caretList
调用的returnResamp = FALSE
会因为分类响应而自动使用'Accuracy'作为效果指标。
此外,还有一些其他注意事项:
trainControl
中设置summary(resamples(model.list))
。因为当你这样做时,你将无法通过caretList
caretList
时也不会使用它。正确的caretList(Y[train] ~ ., data=X[train, ], ...
调用应该像 -> 'Don\'t!'