尝试为比训练数据更多的测试数据预测标签时出现警告消息

Warning message when trying to predict labels for more test data than training data

当我 运行 此代码(或与此相关的任何类似代码)时:

x1 <- c(runif(100, 0.0, 10.0))
y1 <- c(runif(100, 0.0, 10.0))

data <- data.frame(x1, y1)
data$label <- with(data, ifelse((x1-5)^2 + (y1-5)^2 < 9, 1, 0))

lm_fit <- lm(formula = label ~ .,data = data)

x_vals <- seq(0, 10, 0.25)
y_vals <- seq(0, 10, 0.25)

grid <- expand.grid(x_vals, y_vals)

predict(lm_fit, grid)

我收到一条警告消息:

'newdata' had 1681 rows but variables found have 100 rows

我也没有预测到所需的标签。我不明白 R 在这里做什么,有人可以帮忙吗?

如果测试数据中的变量名称与训练数据中的变量名称匹配,则警告消失:

x1 <- c(runif(100, 0.0, 10.0))
y1 <- c(runif(100, 0.0, 10.0))

data <- data.frame(x1, y1)
data$label <- with(data, ifelse((x1-5)^2 + (y1-5)^2 < 9, 1, 0))

lm_fit <- lm(formula = label ~ .,data = data)

x_vals <- seq(0, 10, 0.25)
y_vals <- seq(0, 10, 0.25)

grid <- expand.grid(x_vals, y_vals)

colnames(grid) <- c('x1', 'y1')

predict(lm_fit, grid)