【问题标题】:Errors while performing caret tuning in R在 R 中执行插入符号调整时出错
【发布时间】:2017-06-29 07:45:43
【问题描述】:

我正在使用 caret/R 构建预测模型,但遇到了以下问题:

  1. 尝试执行训练/调整时,我收到此错误:

if (tmps

经过一些研究,似乎在数据中存在缺失值时会发生此错误,而在此示例中并非如此(我确认数据集没有 NA)。但是,我还在某处读到,在插入符号的重新采样例程中可能会引入缺失值,我怀疑这是正在发生的事情。

  1. 为了解决问题 1,我尝试在插入符号重新采样期间“预处理”数据,方法是删除零方差和接近零方差的预测变量,并使用插入符号 knn 自动输入缺失值估算方法 preProcess(c('zv','nzv','knnImpute')), ,但现在我收到以下错误:

错误:预处理需要矩阵或数据帧

不用说我检查并确认输入数据集确实是矩阵,所以我不明白为什么会出现第二个错误。

代码如下:

x.train <- predict(dummyVars(class ~ ., data = train.transformed),train.transformed)
y.train <- as.matrix(select(train.transformed,class))
vbmp.grid <- expand.grid(estimateTheta = c(TRUE,FALSE))
adaptive_trctrl <- trainControl(method = 'adaptive_cv',
                   number = 10, 
                   repeats = 3,
                   search = 'random',
                   adaptive = list(min = 5, alpha = 0.05, 
                                   method = "gls", complete = TRUE),
                   allowParallel = TRUE)
fit.vbmp.01 <- train( 
                 x = (x.train),
                 y = (y.train),
                 method = 'vbmpRadial',
                 trControl = adaptive_trctrl,
                 preProcess(c('zv','nzv','knnImpute')),
                 tuneGrid = vbmp.grid)

问题(1)和(2)的代码唯一的区别是,在(1)中,train语句中的预处理行被注释掉了。

总之,

-数据中没有缺失值

-x.train 和 y.train 都是矩阵

-我尝试在trainControl 中使用标准的'repeatedcv' 方法而不是'adaptive_cv',结果完全相同

-忘了说结果class有3个等级

有人对可能出现的问题有任何建议吗?

一如既往,提前致谢

雷耶马尔

【问题讨论】:

  • 提供可重现的示例和sessionInfo 的结果将有助于回答您的问题。

标签: r r-caret


【解决方案1】:

我的数据也有同样的问题,经过一番挖掘后,我发现其中一列中有一些 Inf(无限)值。

取出它们 (df &lt;- df %&gt;% filter(!is.infinite(variable))) 后,计算运行没有错误。

【讨论】:

    猜你喜欢
    • 2017-08-18
    • 2016-04-22
    • 2018-09-13
    • 1970-01-01
    • 2018-08-30
    • 2018-10-15
    • 2011-09-22
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多