XGBoost模型预测的主要大致思路:
1. 数据准备
首先,需要准备数据。这包括数据的读取、预处理和分割。数据应该包括特征和目标变量。
步骤:
- 读取数据:从CSV文件或其他数据源读取数据。
- 数据清理:处理缺失值、异常值等。
- 数据转换:将因变量转换为因子类型,特征变量转换为适合模型输入的格式。
- 数据分割:将数据分为训练集和测试集,一般按照8:2的比例分割。
2. 特征工程
特征工程是提升模型性能的关键步骤。包括:
- 特征选择:选择对预测目标最重要的特征。
- 特征转换:将分类变量转换为数值变量(如独热编码)。
- 特征缩放:标准化或归一化特征值。
3. 转换数据格式
XGBoost需要输入数据为矩阵格式。因此,需要将数据转换为稀疏矩阵格式。
4. 训练模型
训练模型是整个过程的核心步骤。需要设置模型的参数,并使用训练数据进行训练。
关键点:
- 设置参数:包括树的深度、学习率、采样率等。
- 交叉验证:使用交叉验证找到最佳的迭代次数。
- 模型训练:使用最佳参数训练模型。
5. 模型调参
为了获得最佳模型性能,需要进行参数调优。常用的方法有网格搜索、随机搜索和贝叶斯优化。
6. 模型评估
使用测试集评估模型性能。常用的评估指标有准确率、精确率、召回率、F1分数等。
步骤:
- 生成预测值:使用测试集生成预测值。
- 计算评估指标:根据预测值和实际值计算模型性能指标。
7. 模型预测
使用训练好的模型对新数据进行预测。将新数据转换为与训练数据相同的格式,然后进行预测。
8. 模型保存和加载
训练好的模型可以保存到文件中,以便后续加载和使用。
步骤:
- 保存模型:将模型保存到文件中。
- 加载模型:从文件中加载模型,以便进行预测。
本文数据和代码案例
R
library(xgboost)
library(Metrics)
library(ggplot2)
library(readxl)
library(dplyr)
# 读取数据
data <- read_excel("分析数据.xlsx")
# 用每列的后一个值填充缺失值
data1 <- data %>%
mutate(across(everything(), ~ ifelse(is.na(.), lead(.), .)))
# 查看填充后的数据
head(data1)
# 分离特征和响应变量
X <- data1 %>% select(-ILI) # 移除ILI列
y <- data1$ILI
R
# 划分训练集和测试集
set.seed(123) # 确保可重复性
train_indices <- sample(1:nrow(data1), size = 0.7 * nrow(data1))
train_data <- X[train_indices, ]
train_label <- y[train_indices]
test_data <- X[-train_indices, ]
test_label <- y[-train_indices]
R
# 设置XGBoost参数
params <- list(
booster = "gbtree",
objective = "reg:squarederror",
eta = 0.1
R
# 训练模型
model <- xgb.train(params, dtrain, nrounds = 150)
# 预测
predictions <- predict(model, dtest)
R
# 输出评价指标
cat("R2:", R2, "\n")
cat("Adjusted R2:", adj_R2, "\n")
cat("RMSE:", RMSE, "\n")
cat("MSE:", MSE, "\n")
最终可视化评价指标
R
# 可视化
# 创建散点图和回归线
scatter_plot <- data.frame(Actual = test_label, Predicted = predictions) %>%
ggplot(aes(x = Actual, y = Predicted)) +
geom_point() +
geom_smooth(method = "lm", col = "blue") +
xlab("Actual ILI1") +
ylab("Predicted ILI1") +
ggtitle("Actual vs Predicted")
# 设置标题居中
scatter_plot +
theme(plot.title = element_text(hjust = 0.5))
思路主要是使用R语言进行XGBoost模型预测的流程包括数据准备、模型训练、参数调优、模型评估和预测。首先,加载数据并进行预处理,然后使用 xgb.cv
和 xgb.train
函数进行模型训练和交叉验证。接着,通过调整参数优化模型性能,最后使用测试集评估模型,并使用训练好的模型进行预测新数据。
创作不易,希望大家多多点赞收藏和评论!