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

数据和完整代码

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

相关推荐
冰糖猕猴桃1 小时前
【Python】进阶 - 数据结构与算法
开发语言·数据结构·python·算法·时间复杂度、空间复杂度·树、二叉树·堆、图
天水幼麟1 小时前
python学习笔记(深度学习)
笔记·python·学习
巴里巴气1 小时前
安装GPU版本的Pytorch
人工智能·pytorch·python
wt_cs1 小时前
银行回单ocr api集成解析-图像文字识别-文字识别技术
开发语言·python
_WndProc2 小时前
【Python】Flask网页
开发语言·python·flask
互联网搬砖老肖2 小时前
Python 中如何使用 Conda 管理版本和创建 Django 项目
python·django·conda
测试者家园2 小时前
基于DeepSeek和crewAI构建测试用例脚本生成器
人工智能·python·测试用例·智能体·智能化测试·crewai
大模型真好玩2 小时前
准确率飙升!Graph RAG如何利用知识图谱提升RAG答案质量(四)——微软GraphRAG代码实战
人工智能·python·mcp
前端付豪2 小时前
11、打造自己的 CLI 工具:从命令行到桌面效率神器
后端·python
前端付豪2 小时前
12、用类写出更可控、更易扩展的爬虫框架🕷
后端·python