我是R初学者,我必须在随机森林模型中进行5或10倍交叉验证。我的问题是我必须手动执行cv,而不要使用软件包。我想做的是:1.用训练数据建立k折2.选择我的调整参数,例如树= c(200,400,600)3.将我的模型拟合k-1折,并预测我的值保持集(验证集)4.然后,我要评估对保持集的预测并保存该值。
我的评估参数应为AUC。我了解理论,但在R中却很难做到。您对我的代码有想法吗?非常感谢!!!
这是一个分类问题,因此另一种选择是认为虹膜数据集也可以在这里使用。
我坚持认为,我不知道如何将模型拟合为k-1折叠并预测每个验证集上的值。我是否设置i = 1,i = 2,依此类推? 这是我已经拥有的,但是不起作用:
training.x =虹膜[,1:4]; training.y = iris [,5];
training$folds =
sample(1:5,nrow(training), replace=TRUE)
myGrid <- expand.grid
( ntrees = c(500, 1000, 2000),
mtry = c( 2, 4, 6, 8)
for (i in 1: 5){
newrf = randomForest(x = training.x[training$folds!=i,] , y = as.factor(training.y)
,tuneGrid = myGrid , importance = TRUE , do.trace = 10) new.pr = predict(newrf, training.mt.X[training$folds==i,], id= i)
err.vect[i] =roc.area(test, new.pr)$class
print(paste("AUC for fold", i, ":", err.vect[i]))}```
答案 0 :(得分:0)
# Code for 10 Fold Cross Validation: Adjust variables and data frame to yours
set.seed(17)
cv.error=rep(0,9)
for (i in 1:9){
glm.fit=(medv~poly(lstat,i),data=Boston)
cv.error[i]=cv.glm(Boston,glm.fit,K=10)$delta[1]
}
cv.error
plot(cv.error,type="b")