【发布时间】:2018-08-29 20:26:50
【问题描述】:
据我所知,k折交叉验证是将训练数据集划分为k个相等的子集,每个子集都不相同。来自 R-bloggers 的用于 k-fold 验证的 R 代码附在下面。该数据有 506 个 obs。和 14 个变量。根据代码,他们使用了 10 折。 我的问题是,如果每个折叠都有不同的子集或每个折叠有一些重复的数据点。我想确保测试每个数据点而不重复,所以我的目标是让每个折叠都有不同的数据点。
set.seed(450)
cv.error <- NULL
k <- 10
library(plyr)
pbar <- create_progress_bar('text')
pbar$init(k)
for(i in 1:k){
index <- sample(1:nrow(data),round(0.9*nrow(data)))
train.cv <- scaled[index,]
test.cv <- scaled[-index,]
nn <- neuralnet(f,data=train.cv,hidden=c(5,2),linear.output=T)
pr.nn <- compute(nn,test.cv[,1:13])
pr.nn <- pr.nn$net.result*(max(data$medv)-min(data$medv))+min(data$medv)
test.cv.r <- (test.cv$medv)*(max(data$medv)-min(data$medv))+min(data$medv)
cv.error[i] <- sum((test.cv.r - pr.nn)^2)/nrow(test.cv)
pbar$step()
}
【问题讨论】:
标签: r neural-network cross-validation