R语言数据分析15-xgboost模型预测

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 函数进行模型训练和交叉验证。接着,通过调整参数优化模型性能,最后使用测试集评估模型,并使用训练好的模型进行预测新数据。

数据和完整代码

创作不易,希望大家多多点赞收藏和评论!

相关推荐
刘马想放假3 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
2601_967987373 小时前
python判断变量名不要调用任何函数实现
python·函数·语法·判断·变量名
卷无止境4 小时前
SALib敏感性分析的python库学习笔记
后端·python
duansamve5 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
特立独行的猫A5 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python
特立独行的猫A6 小时前
cj-tauri vs Rust/Tauri 同款播放器实测:编译 21 秒 vs 11 分钟,磁盘 12 MB vs 1.2 GB
java·后端·python
duansamve6 小时前
详解Flask中Session和Cookie
python·flask
威哥爱编程7 小时前
模拟面试智能体开发实战 04:面试聊到哪算哪?用状态机把整场面试编排起来
python·agent·harmonyos
威哥爱编程7 小时前
模拟面试智能体开发实战 03:AI 面试官太客气?人设 Prompt 让它像个真考官
python·agent·harmonyos
量化分析码农7 小时前
股票数据接口返回字段逐项解析:从在线验证到 Python 数据校验
python