R caret package, Error: Please make sure `y` is a factor or numeric value
R caret package, Error: Please make sure `y` is a factor or numeric value
我正在尝试使用 caret 包来交叉验证我制作的模型。它取决于 3 个变量,但我使用的数据集远不止于此。为了重现一个更精确的例子,我制作了变量 a b c d 和 e,但只使用 a b 和 c 来预测。
a <- rnorm(10)
b <- rnorm(10)
c <- rnorm(10)
d <- rnorm(10)
e <- rnorm(10)
y <- rnorm(10)
df <- data.frame(a,b,c,d,e,y, stringsAsFactors=FALSE)
library(caret)
model <- train(
df$y ~ df$a + df$b + df$c, x = df,
method = "lm",
trControl = trainControl(
method = "cv", number = 10,
verboseIter = TRUE,
))
这给出了错误:请确保 y
是一个因子或数值
我尝试了几种方法来改变 y 但没有成功。任何人都知道为什么这不起作用?我用谷歌搜索了几个小时,但找不到完全相同的问题。
您应该使用公式(和 data
参数) 或 x
和 y
参数,您将两者混合.所以你可以使用一个公式:
model <- train(
y ~ a + b + c, data = df,
method = "lm",
trControl = trainControl(
method = "cv", number = 10,
verboseIter = TRUE,
))
(您不需要编写 df$y
、df$a
等,因为您提供了 data
参数,因此 R 知道要查看该数据帧)
我正在尝试使用 caret 包来交叉验证我制作的模型。它取决于 3 个变量,但我使用的数据集远不止于此。为了重现一个更精确的例子,我制作了变量 a b c d 和 e,但只使用 a b 和 c 来预测。
a <- rnorm(10)
b <- rnorm(10)
c <- rnorm(10)
d <- rnorm(10)
e <- rnorm(10)
y <- rnorm(10)
df <- data.frame(a,b,c,d,e,y, stringsAsFactors=FALSE)
library(caret)
model <- train(
df$y ~ df$a + df$b + df$c, x = df,
method = "lm",
trControl = trainControl(
method = "cv", number = 10,
verboseIter = TRUE,
))
这给出了错误:请确保 y
是一个因子或数值
我尝试了几种方法来改变 y 但没有成功。任何人都知道为什么这不起作用?我用谷歌搜索了几个小时,但找不到完全相同的问题。
您应该使用公式(和 data
参数) 或 x
和 y
参数,您将两者混合.所以你可以使用一个公式:
model <- train(
y ~ a + b + c, data = df,
method = "lm",
trControl = trainControl(
method = "cv", number = 10,
verboseIter = TRUE,
))
(您不需要编写 df$y
、df$a
等,因为您提供了 data
参数,因此 R 知道要查看该数据帧)