繁体   English   中英

在R中执行插入符号调整时出错

[英]Errors while performing caret tuning in R

我正在使用插入号/ R建立预测模型,但遇到了以下问题:

  1. 尝试执行训练/调整时,出现以下错误:

if(tmps <.Machine $ double.eps ^ 0.5)中的错误0 else tmpm / tmps:需要TRUE / FALSE时缺少值

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

  1. 为了解决问题1,我尝试了在插入符号的重新采样过程中对数据进行“预处理”,方法是删除零方差和接近零方差的预测变量,并使用插入符号knn自动preProcess(c('zv','nzv','knnImpute')),方法preProcess(c('zv','nzv','knnImpute')),自动输入缺失值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个等级

任何人对可能出什么问题有任何建议?

一如既往,在此先感谢

reyemarr

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

将它们取出后( df <- df %>% filter(!is.infinite(variable)) ),计算运行没有错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM