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

数据和完整代码

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

相关推荐
Alan_6913 小时前
聊聊 Swagger/Postman/Apifox 的真实选型与 Python 项目实战
python·测试工具·postman
智慧物业老杨4 小时前
物业绿化数智化权责管控方案:基于工单平台的双层权限追溯模块落地实践
python
Metaphor6924 小时前
使用 Python 在 Word 文档中添加批注
python·word
FreakStudio5 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
会周易的程序员5 小时前
使用 pybind11 封装 C++ 日志库 microLog 为 Python 模块
java·c++·python·物联网·架构·日志·aiot
一只专注api接口开发的技术猿5 小时前
电商评论自动化监控与情感数据分析完整落地教程(附可直接运行 Python 代码)
大数据·数据库·python·数据分析·自动化
HAPPY酷5 小时前
【ROS2】 Conda 环境搭建(命令行版)
linux·运维·python·ubuntu·机器人·conda
柒和远方6 小时前
LeetCode 4. 寻找两个正序数组的中位数 —— 二分划分的艺术
javascript·python·算法
学也学不废7 小时前
Flask问答系统与LAUR模型
人工智能·python·机器学习·分类·数据挖掘
lewis_lk7 小时前
uv: Python 新一代极速包管理工具
python