⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

R交叉验证

系统学习k折交叉验证、留一法,使用caret包自动调参评估模型 · 难度:入门 · +15XP

交叉验证:可靠评估模型性能

交叉验证将数据分成训练集和验证集多次,取平均性能,避免单次划分的偶然性。

1. k折交叉验证手动实现

data(iris)
set.seed(123)
folds <- sample(1:5, nrow(iris), replace=TRUE)
accuracy <- numeric(5)
for(k in 1:5){
  train <- iris[folds!=k,]
  test <- iris[folds==k,]
  model <- rpart(Species ~ ., data=train, method='class')
  pred <- predict(model, test, type='class')
  accuracy[k] <- mean(pred == test$Species)
}
mean(accuracy)

2. 使用caret包简化

library(caret)
ctrl <- trainControl(method='cv', number=5)
model_cv <- train(Species ~ ., data=iris, method='rpart', trControl=ctrl)
print(model_cv)

3. 留一法LOOCV

ctrl_loocv <- trainControl(method='LOOCV')
model_loocv <- train(Species ~ ., data=iris, method='rpart', trControl=ctrl_loocv)
model_loocv

交叉验证方法对比:

方法优点缺点
k折平衡偏差和方差k选择需经验
LOOCV几乎无偏差计算量大

练习提示:caretiris数据集做10折交叉验证,使用随机森林模型。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 71 篇
0 完成
🔥 0