很抱歉,即使有关于将输出保存为嵌套for循环的现有文章,我也无法弄清楚。下面的循环旨在采用留一法交叉验证,并为多个自由度做此验证。该循环还计算“遗漏样本”和自由度的每种组合的平均RMSE,即,如果有五个样本和三个自由度,则我的输出应包括15个RMSE。
在R nested for loop output条帖子之后:
res = matrix(nrow = 144540, ncol = 3)
# Define LOOCV function
LOOCV_df <- function(dat){
for (idx in 1:nrow(dat)){
for(i in 2:100)
{
training <- dat[-c(idx),]
test <- dat[idx,]
fitted_spline_model <- smooth.spline(x = training$LotArea, y = training$SalePrice, df = i)
predicted_points <- predict(fitted_spline_model, newdat = test)
RMSE_[idx]<-sqrt((as.numeric(as.character(unlist(predicted_points))) - dat[i*idx,]$SalePrice)^2)
res[i*idx]=mean(RMSE_)
}
}
}
LOOCV_df(training_data)
>There were 50 or more warnings (use warnings() to see the first 50)
>In RMSE_[i * idx] <- sqrt((as.numeric(as.character(unlist(predicted_points))) - ... :
number of items to replace is not a multiple of replacement length
我正在使用以下数据https://www.kaggle.com/c/house-prices-advanced-regression-techniques/download/train.csv。
训练数据集中有1460行。因此,如果我运行循环以测试三个不同的自由度,则我希望有4380个输出(平均RMSE)。