首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >caretEnsemble:组件模型没有相同的重采样策略。

caretEnsemble:组件模型没有相同的重采样策略。
EN

Stack Overflow用户
提问于 2018-11-13 11:02:24
回答 1查看 810关注 0票数 0

我有几个预测模型是使用相同的trainControl创建的。这些模型必须事先创建(也就是说,我不能使用caretList同时训练多个模型)。

下面是我的最小例子。当我手动组合多个(已经创建的)模型并将它们传递给caretStack时,

代码语言:javascript
运行
复制
library("kernlab")
library("rpart")
library("caret")
library("caretEnsemble")

trainingControl <- trainControl(method='cv', number=10, savePredictions = "final", classProbs=TRUE)
data(spam)
ds <- spam
tr <- ds[sample(nrow(ds),3221),]
te <- ds[!(rownames(ds) %in% rownames(tr)),]
model <- train(tr[,-58], tr$type, 'svmRadial', trControl = trainingControl)
model2 <- train(tr[,-58], tr$type, 'rpart', trControl = trainingControl)
multimodel <- list(svm = model, nb = model2)
class(multimodel) <- "caretList"
stack <- caretStack(multimodel, method = "rf", metric = "ROC", trControl = trainingControl)

库抛出错误:

Component models do not have the same re-sampling strategies

为什么我要用同样的策略来生成基本模型?

我在github discussion zachmayer/caretEnsemble/issues/104中找到了到zachmayer/caretEnsemble/issues/104类的“强制转换”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 12:36:21

你快到了。需要记住的一点是,当您想要使用caretEnsemble时,您必须在trainControl中通过trainControl中的“index”选项设置重采样索引。如果您运行caretList,它倾向于自己设置它,但是最好自己来做。当您在caretList之外运行不同的模型时,情况尤其如此。你需要确保重采样是一样的。在您所引用的github示例中也可以看到这一点。

代码语言:javascript
运行
复制
trainingControl <- trainControl(method='cv', 
                                number=10, 
                                savePredictions = "final", 
                                classProbs=TRUE, 
                                index=createResample(tr$type)) # this needs to be set.

这将确保您的代码将运行。

注意,在您给出的示例代码中,它将返回错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53279586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档