【问题标题】:"train" function Error in "caret" package R: "Please use column names for `x`"“caret”包R中的“train”函数错误:“请使用`x`的列名”
【发布时间】:2020-06-04 08:25:42
【问题描述】:

我正在尝试使用 train 函数进行 Leave-One-Out (LOO) 交叉验证 (LOOCV)。

虽然

train(y~ x1, data = test, method="lm", trControl = trainControl(method = "LOOCV")) 

效果很好,我需要以另一种格式编写它,我可以将它放入一个 for 循环中,我可以根据需要制作尽可能多的模型。但是下面的格式不起作用并报错:

train(paste("y~", colnames(test[2])), data = test, method="lm", trControl = trainControl(method = "LOOCV"))
Error: Please use column names for x

但“lm”函数中的相同格式效果很好:

lm(paste("y~", colnames(test[2])), data = test)

你能指导我如何解决这个问题吗?

【问题讨论】:

    标签: r r-caret


    【解决方案1】:

    找到了解决办法!

    lm("y~x1", data=test)
    

    工作原理与

    lm (y~x1, data=test)
    

    但是 "y~x1" 在 train 函数中不起作用。 需要在前面加上'as.formula':

    train(as.formula("y~x", data=test, method="lm", trControl = trainControl(method = "LOOCV"))
    

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 2021-03-28
      • 2014-05-23
      • 2015-10-29
      • 2017-07-20
      • 2015-08-07
      • 1970-01-01
      • 2018-03-11
      相关资源
      最近更新 更多