随机森林超参数自动调参R代码
时间: 2024-12-16 19:19:32 浏览: 5
intro-to-applied-ml:“R 应用机器学习简介”演讲的代码
随机森林是一种集成学习方法,在机器学习中常用于分类和回归任务。它的超参数主要包括“n_estimators”(决策树的数量)、“max_depth”(每棵树的最大深度)、“min_samples_split”(分裂节点所需的最小样本数)等。对随机森林进行超参数调优通常是通过交叉验证(如`caret`包中的`trainControl`)结合网格搜索(如`gridSearchCV`)来完成。
在R语言中,你可以使用`caret`库进行随机森林模型的超参数调整。以下是一个基本的示例:
```R
# 首先加载必要的库
library(caret)
library(randomForest)
# 假设你有一个数据集df,目标变量是y,特征变量是X
set.seed(123) # 设置随机种子保证结果可重复
# 数据预处理(如果需要)
data <- preProcess(df[, -y], method = c("center", "scale"))
# 创建训练和测试集
ind <- createDataPartition(y, p = .8, list = FALSE)
train_index <- expand.grid(n_estimators = seq(50, 500, by = 50),
max_depth = seq(5, 40, by = 5))
# 使用randomForest函数创建模型,并进行网格搜索
rf_model <- train(y ~ ., data = train_data,
method = "rf",
trControl = trainControl(method = "cv", number = 5), # 交叉验证
tuneGrid = param_grid)
# 最佳参数
best_params <- rf_model$bestTune
# 使用最佳参数训练最终模型
final_rf <- randomForest(y ~ ., data = train_data,
ntree = best_params$n_estimators,
mtry = sqrt(ncol(train_data) - 1), # 或者自定义最大特征数量
max_depth = best_params$max_depth)
# 测试模型性能
predictions <- predict(final_rf, test_data)
```
阅读全文