R 做 GBM 模型变量因变量是二分类变量,自变量中有分类变量的完整代码
时间: 2024-08-14 07:03:59 浏览: 60
在R语言中,当你想要建立一个梯度提升决策树(Gradient Boosting Machine, GBM)模型处理二分类问题,并且自变量(features)中包含分类变量,你可以使用`gbm`包。这里是一个简单的示例代码:
```R
# 首先,确保已经安装了必要的包,如果没有,运行:
install.packages("gbm")
install.packages("caret") # 用于数据预处理和交叉验证
# 加载所需的库
library(gbm)
library(caret)
# 假设你的数据集叫data,其中y是目标变量(二分类),x1到xn是特征变量(包括分类变量)
# 分别表示为连续变量、因子或名义变量等
# 数据预处理,如果是分类变量,可能需要转换为哑编码或其他形式
data$classification_var <- as.numeric(factor(data$classification_var)) # 这里假设classification_var是一个分类变量
# 划分训练集和测试集
set.seed(123) # 设置随机种子以保证结果可复现
trainIndex <- createDataPartition(data$y, p = .8, list = FALSE)
train_data <- data[trainIndex, ]
test_data <- factor(train_data$y)
# 创建GBM模型
control <- trainControl(method = "cv", number = 5) # 使用交叉验证控制参数选择
model <- gbm(y ~ ., data = train_data, distribution = "bernoulli", # 对于二分类用伯努利分布
n.trees = 1000, # 树的数量
interaction.depth = 3, # 叶子节点的最大深度
shrinkage = 0.1, # 学习率
max.iter = 1e5, # 最大迭代次数
verbose = TRUE,
cv.folds = control)
# 训练完成后评估模型性能
predictions <- predict(model, newdata = test_data, type = "response")
confusionMatrix(predictions > 0.5, test_data$y) # 查看混淆矩阵,判断阈值是否合适
#
阅读全文