10 折交叉验证
正如视频中所示,验证模型的更好方法是使用多个系统化的测试集,而不是单次随机的训练/测试划分。幸运的是,caret 包让这一点非常容易实现:
model <- train(y ~ ., my_data)
caret 支持多种交叉验证方法。您可以通过 trainControl() 函数指定交叉验证的类型以及折数,并将其传给 train() 的 trControl 参数:
model <- train(
y ~ .,
my_data,
method = "lm",
trControl = trainControl(
method = "cv",
number = 10,
verboseIter = TRUE
)
)
需要注意的是:用于建模的方法通过主函数 train() 指定,而交叉验证的方法通过 trainControl() 指定。
本练习是课程的一部分
在 R 中使用 caret 的机器学习
练习说明
- 使用
train()和 10 折交叉验证,拟合一个线性回归模型:用diamonds数据集中的所有其他变量作为自变量来预测price。 (为加速运行,我们已对完整的diamonds数据集做了子集处理,但对象名仍为diamonds。) - 将模型打印到控制台并检查结果。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Fit lm model using 10-fold CV: model
model <- train(
___,
___,
method = "lm",
trControl = trainControl(
method = "cv",
number = ___,
verboseIter = TRUE
)
)
# Print model to console