【问题标题】:"promise already under evaluation" error in R caret's rfe functionR插入符号的rfe函数中的“承诺已经在评估中”错误
【发布时间】:2017-09-20 08:54:18
【问题描述】:

我有一个矩阵X 和向量Y,我将它们用作rfe 包中rfe 函数的参数。很简单:

我收到一个我无法解读的奇怪错误:

promise 已经在评估中:递归默认参数引用或早期问题?

编辑: 这是我数据前 5 行的可重现示例:

library(caret)

X_values = c(29.04,96.57,4.57,94.23,66.81,26.71,69.01,77.06,49.52,97.59,47.57,64.07,24.25,11.27,77.30,90.99,44.05,30.96,96.32,16.04)
X = matrix(X_values, nrow = 5, ncol=4)
Y = c(5608.11,2916.61,5093.05,3949.35,2482.52)

rfe(X, Y)

我的 R 版本是 3.2.3。插入符号包是 6.0-76。

有人知道这是什么吗?

【问题讨论】:

  • 请提供reproducible example
  • 如果您能在编辑后删除我的问题的不良费率,或者详细说明您离开的原因,我将不胜感激。

标签: r r-caret rfe


【解决方案1】:

您的代码有两个问题。

  1. 您需要指定要适应的函数/算法。 (这就是导致您收到错误消息的原因。我不确定为什么rfe 会抛出如此神秘的错误消息;确实,它使调试变得困难。)
  2. 您需要为输入数据中的列命名。

以下作品:

library(caret)

X_values = c(29.04,96.57,4.57,94.23,66.81,26.71,69.01,77.06,49.52,97.59,47.57,64.07,24.25,11.27,77.30,90.99,44.05,30.96,96.32,16.04)
X = matrix(X_values, nrow = 5, ncol=4)
Y = c(5608.11,2916.61,5093.05,3949.35,2482.52)

ctrl <- rfeControl(functions = lmFuncs)
colnames(X) <- letters[1:ncol(X)]

set.seed(123)
rfe(X, Y, rfeControl = ctrl)

我为 rfe 选择了线性模型。 警告消息的原因是交叉验证期间数据中的观察数量较少。您可能还想设置 sizes 参数来消除有意义的功能。

【讨论】:

  • 如果我尝试调用rfe(X, Y, ctrl) 而不是rfe(X, Y, rfeControl=ctrl),我会得到同样的错误
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 2019-06-02
  • 2016-04-26
  • 1970-01-01
相关资源
最近更新 更多