我正在对从 1 到 5 次的多项式执行 K = 10 的 K 折练习,目的是确定哪个多项式最适合所提供的数据。尽管如此,当我尝试使用长度为 32 的测试数据(X 测试)预测 Y-Hat 时。R 向我显示警告,让我知道预测已调整为具有 288 的训练数据的长度我真的不明白为什么会这样。
我相信的是,在拟合 gml 然后预测之后,我应该得到 x 测试集中包含的 32 个点的 32 y 预测值。
“...警告:‘newdata’有 32 行,但找到的变量有 288 行警告:‘newdata’有 32 行,但找到的变量有 288 行警告:‘newdata’有 32 行,但找到的变量有 288 行警告...”
这是我的代码:
k = 10
CVMSE = matrix(NA, nrow = k, ncol = 5)
set <- 1:320
random_x = sample(train_x, size = length(train_x))
random_y = sample(train_noisy_y, size = length(train_noisy_y))
n <- length(train_x)
k <- 10
group_sizes_x <- rep(floor(n/k), k)
groups_x <-split(random_x, rep(1:k,group_sizes_x))
n <- length(train_noisy_y)
k <- 10
group_sizes_y <- rep(floor(n/k), k)
groups_y <-split(random_y, rep(1:k,group_sizes_y))
for (deg in 1:5) {
for (i in 1:k){
x_test <- groups_x[[i]] %>% unlist()
y_test <- groups_y[[i]] %>% unlist()
x_train <- groups_x[-i] %>% unlist()
y_train <- groups_y[-i] %>% unlist()
model <- glm(y_train ~ poly(x_train, deg))
y_pred <- predict.glm(model, newdata = data.frame(x = x_test))
CVMSE[i, deg] <- mean((y_test - y_pred)^2)
}}
meanCVMSE = apply(CVMSE, 2, mean)
meanCVMSE
最后我得到了 meanCVMSE 但有我之前提到的警告。