当前位置: 首页 > 知识库问答 >
问题:

r caretEnsemble警告:未在trControl中定义索引

公羊绪
2023-03-14

我有一些r/cerot代码来将几个交叉验证的模型适合于一些数据,但是我收到一条警告消息,说我在查找有关的任何信息时遇到了困难。这是我应该关心的事吗?

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, savePredictions=TRUE, search="random")

# fit several (cross-validated) models 
algorithmList <- c('lda',         # Linear Discriminant Analysis 
                   'rpart' ,      # Classification and Regression Trees
                   'svmRadial')   # SVM with RBF Kernel

models <- caretList(Species~., data=iris, trControl=trainControl, methodList=algorithmList)
Warning messages:
1: In trControlCheck(x = trControl, y = target) :
  x$savePredictions == TRUE is depreciated. Setting to 'final' instead.
2: In trControlCheck(x = trControl, y = target) :
  indexes not defined in trControl.  Attempting to set them ourselves, so each model in the ensemble will have the same resampling indexes.

共有1个答案

安博文
2023-03-14

traincontrol默认情况下不会为您生成索引,它用作将所有参数传递给您正在训练的每个模型的一种方式。

当我们搜索关于错误的github问题时,我们可以找到这个特定的问题。

您需要确保每个模型都适合完全相同的重采样折叠。caretEnsemble通过合并每个交叉验证文件夹的测试集来构建集成,如果每个文件夹中有不同的观察结果,您将得到不正确的结果。

这意味着当您指定number=5repeats=3时,模型实际上并不是为每个文件夹的样本获得预定的索引,而是独立地生成它们自己的索引。

因此,为了确保模型在哪些样本属于哪些折叠方面彼此一致,您必须在traincontrol对象中指定index=createFolds(iris$species,5)

# new trainControl object with index specified
trainControl <- trainControl(method = "repeatedcv",
                             number = 5,
                             index = createFolds(iris$Species, 5),
                             repeats = 3,
                             savePredictions = "all",
                             search = "random")
 类似资料:
  • 这出现在我的浏览器控制台: [Vue warn]:计算表达式“permissions.edit”时出错:TypeError:无法读取未定义的属性“edit”(在组件中找到): 相关代码: 结果: 权限显然不是未定义的。发生什么事?让事情变得更混乱的是,如果我将一个文本对象传递给组件(),警告就会消失,但是的json输出看起来完全相同。

  • 我得到了一个定义字段的警告: 我试图将其更改为: 现在它根本不起作用,因为模式无效。 错误: 知道怎么解决吗?

  • 问题内容: 我在错误日志中收到此警告,并想知道如何在代码中更正此问题。 警告:PHP注意:未定义属性:stdClass :: $ records在440行的script.php中 一些代码: 如果记录存在则响应 如果记录不存在,则响应 我在想类似array_key_exists()的功能,但是对于对象,还有什么吗?还是我走错路了? 问题答案:

  • 作为一个Vue.js的初学者,我有一个看起来像这样的组件: “data.artist.name”在传递给数据道具的对象中存在且正确。但是我怎样才能摆脱关于嵌套艺术家名称的警告呢? [Vue warn]:计算表达式“data.artist.name”时出错:类型错误:scope.data.artist未定义(在组件中找到): 埃塔:啊,对不起,是的,显示“数据”会有帮助: {“id”:23182,“

  • 当我将函数应用于Groupby对象的多个列时,Pandas会抛出一个Future Warning。它建议使用列表作为索引,而不是元组。一个人会怎么做?

  • 问题内容: 我正在尝试从Java代码调用Java脚本函数。 这是我的Java代码 这是我的Java脚本文件: 但是当我运行驱动程序类的主要方法时,它给我错误如下: 我所知道的是它需要一些脚本引擎来执行它。 为此,我在类路径中添加了rhino.jar文件,但这不起作用。 我没有得到如何解决这个错误。请帮助。谢谢。 问题答案: 不是JavaScript的一部分,而是Web浏览器提供的对象的一部分。所以