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

时间:2017-06-29 07:45:44

标签: r r-caret

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

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

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

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

    1. 为了解决问题1,我试过"预处理"通过删除零方差和近零方差预测值,并使用插入符号自动插补方法preProcess(c('zv','nzv','knnImpute')),自动输入缺失值,在插入符号中重新采样期间的数据,但现在我收到以下错误:
    2.   

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

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

      代码如下:

      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)中,列车语句中的预处理行被注释掉了。

      总之,

      - 数据中没有缺失值

      - x.train和y.train绝对是矩阵

      - 我尝试使用标准的'repeatedcv'方法代替'adaptive_cv' trainControl中的class具有相同的确切结果

      -Forgot提到结果<LocationMatch "^/(ae/en|ar/en|ar/es|at/en|au/en|be/en|br/en)/"> Order Allow,Deny Allow from all #should keep varying as per the regex matched in location match ProxyPass "http://www.xyz.com.au:80/au/en/" #should keep varying as per the regex matched in location match ProxyReverse "http://www.xyz.com.au:80/au/en/" </LocationMatch> 有3个级别

      任何人都有任何关于可能出错的建议吗?

      一如既往,提前谢谢

      reyemarr

1 个答案:

答案 0 :(得分:0)

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

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