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

XGBoost模型预测的主要大致思路:

1. 数据准备

首先,需要准备数据。这包括数据的读取、预处理和分割。数据应该包括特征和目标变量。

步骤:
  • 读取数据:从CSV文件或其他数据源读取数据。
  • 数据清理:处理缺失值、异常值等。
  • 数据转换:将因变量转换为因子类型,特征变量转换为适合模型输入的格式。
  • 数据分割:将数据分为训练集和测试集,一般按照8:2的比例分割。

2. 特征工程

特征工程是提升模型性能的关键步骤。包括:

  • 特征选择:选择对预测目标最重要的特征。
  • 特征转换:将分类变量转换为数值变量(如独热编码)。
  • 特征缩放:标准化或归一化特征值。

3. 转换数据格式

XGBoost需要输入数据为矩阵格式。因此,需要将数据转换为稀疏矩阵格式。

4. 训练模型

训练模型是整个过程的核心步骤。需要设置模型的参数,并使用训练数据进行训练。

关键点:
  • 设置参数:包括树的深度、学习率、采样率等。
  • 交叉验证:使用交叉验证找到最佳的迭代次数。
  • 模型训练:使用最佳参数训练模型。

5. 模型调参

为了获得最佳模型性能,需要进行参数调优。常用的方法有网格搜索、随机搜索和贝叶斯优化。

6. 模型评估

使用测试集评估模型性能。常用的评估指标有准确率、精确率、召回率、F1分数等。

步骤:
  • 生成预测值:使用测试集生成预测值。
  • 计算评估指标:根据预测值和实际值计算模型性能指标。

7. 模型预测

使用训练好的模型对新数据进行预测。将新数据转换为与训练数据相同的格式,然后进行预测。

8. 模型保存和加载

训练好的模型可以保存到文件中,以便后续加载和使用。

步骤:
  • 保存模型:将模型保存到文件中。
  • 加载模型:从文件中加载模型,以便进行预测。

本文数据和代码案例

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
# 划分训练集和测试集
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]
# 设置XGBoost参数
params <- list(booster = "gbtree",objective = "reg:squarederror",eta = 0.1
# 训练模型
model <- xgb.train(params, dtrain, nrounds = 150)# 预测
predictions <- predict(model, dtest)
# 输出评价指标
cat("R2:", R2, "\n")
cat("Adjusted R2:", adj_R2, "\n")
cat("RMSE:", RMSE, "\n")
cat("MSE:", MSE, "\n")

最终可视化评价指标

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

数据和完整代码

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWS Load Balancer Controller 实践

背景 通过编写K8S的Ingress 然后能自动创建 aws的LB 作用 控制器监视 Kubernetes Ingress 或 Service 资源。作为响应,它会创建相应的 AWS 弹性负载均衡资源。您可以通过对 Kubernetes 资源应用注释来配置负载均衡器的特定行为。例如,您可以使用注释将 AWS 安全组附加到负…

人工智能_机器学习097_PCA数据降维算法_数据去中心化_特征值_特征向量_EVD特征值分解原来和代码实现---人工智能工作笔记0222

降维算法的原理,一会咱们再看,现在先看一下,算法 可以看到PCA算法的,原理和过程,我们先看一下代码 为了说明PCA原理,这里,我们,先来计算一下X的方差,可以看到 先把数据进行去中心化,也就是用数据,减去数据的平均值. B = X-X.mean(axis=0) 这段代码是用于计算矩阵X的每一列减去该…

websockets怎么工作的呢?

WebSockets是一种在单个TCP连接上进行全双工通信的协议&#xff0c;使得客户端和服务器之间的数据交换变得更加简单&#xff0c;并允许服务端主动向客户端推送数据。下面是WebSockets的工作原理&#xff1a; 1. **握手阶段**&#xff1a; - 客户端发起一个HTTP请求到服务器&…

react+vite创建

要在本地初始化一个结合了React和Vite的项目&#xff0c;你可以遵循以下步骤&#xff1a; 1、安装Node.js&#xff1a; 确保你的机器上已安装了Node.js。如果未安装&#xff0c;请前往Node.js官网下载并安装。 2、使用终端或命令提示符&#xff1a; 打开你的终端&#xff08;…

测试工程师经常使用的Python中的库,以及对应常用的函数

os (操作系统接口) 该库提供了许多与操作系统交互的函数&#xff0c;如文件处理、目录操作、进程管理等。 常用功能包括&#xff1a; os.name: 获取操作系统的名称。 os.path: 用于操作文件路径的模块&#xff0c;如os.path.join拼接路径。 os.mkdir: 创建目录。 os.remove: 删…

EE trade:通货膨胀对老百姓意味着什么

通货膨胀&#xff0c;是经济领域中的一个常见现象&#xff0c;对社会各阶层尤其是普通老百姓的生活产生了深远影响。理解通货膨胀对老百姓的真实含义&#xff0c;可以帮助我们更好地应对日常生活的变化与挑战。 1. 生活成本的上升 最直接的影响体现在生活成本上。通货膨胀会导致…

Linux操作系统:Redis在虚拟环境下的安装与部署

Redis下载方法 最近部署项目的时候用到了Redis&#xff0c;自己在安装的时候也碰到了一些列问题最终安装成功&#xff0c;记录一下自己的安装历程。前期准备&#xff1a; 服务器Linux版本&#xff1a;Centos8.4 64位&#xff08;http://isoredirect.centos.org/centos/8/isos/…

TS设置接收的形参类型

在我们使用pinia时会接受参数&#xff0c;一般来说是传递两个参数 setGlobalState(...args: ObjToKeyValArray<GlobalState>) {this.$patch({ [args[0]]: args[1] }); } 例如此时传递的是globalStore.setGlobalState("token", "123"); 那么此时的…

python姿态识别+Tensflow1.12+pyqt5+UI

python姿态识别Tensflow1.12pyqt5UI import datetimefrom PyQt5.QtCore import QCoreApplication from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog from vedio import vediofrom HumanPoseRec import Ui_MainWindow from PyQt5 import QtCore, QtGui, Qt…

如何使用Python提取Excel中固定单元格的内容

正文共&#xff1a;1234 字 31 图&#xff0c;预估阅读时间&#xff1a;1 分钟 之前转载了颜总的Python环境搭建文章&#xff08;Python办公自动化—环境搭建&#xff09;&#xff0c;很久过去了&#xff0c;颜总也没有再更新。现在我有一个需求&#xff0c;就是我手上有大量格…

Android Studio 下载 | 安装 | 下载 SDK | 中文插件 | 卸载

文章目录 下载安装包安装下载 SDK中文插件卸载 下载安装包 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 点击下载 Android Studio。 在协议最下方勾选同意&#xff08;第一次用最好还是看一眼&#xff09;&#xff0c;再点击 Dowload Android Stu…

JS 转化中文首字母拼音

引入 chinapy.js文件下载地址 链接&#xff1a;百度云连接 提取码&#xff1a;zrjk import { makePy } from /utils/chinapy; let chinaPyName makePy(黄飞鸿) console.log(chinaPyName) // hfh

css文字超出元素省略,单行、多行省略

通用CSS .box {width: 500px;border: 1px solid red;padding: 10px;line-height: 24px;} 1.单行省略 .singe-line {text-overflow: ellipsis;overflow: hidden;word-break: break-all;white-space: nowrap;}<p>单行省略</p><div class"singe-line box&qu…

选择核密度估计带宽LSCV与DPI方法对比

最小二乘交叉验证&#xff08;Least Squares Cross-Validation, LSCV&#xff09;和直接插入法&#xff08;Direct Plug-in, DPI&#xff09;是两种常用于选择核密度估计带宽的方法。 原理与定义 最小二乘交叉验证&#xff08;LSCV&#xff09; 原理&#xff1a;通过交叉验证…

二叉树的中序遍历-力扣

二叉树的中序遍历&#xff0c;指首先遍历左节点&#xff0c;然后遍历中间节点&#xff0c;最后遍历右节点&#xff0c;按照这个顺序进行递归即可。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* …

【前端】JS示例:实现在一个数组(arrSstd)中查找基于uapid的值,并根据该值是否存在来决定是更新roleid还是添加新数据

要实现在一个数组&#xff08;arrSstd&#xff09;中查找基于uapid的值&#xff0c;并根据该值是否存在来决定是更新roleid还是添加新数据&#xff0c;你可以使用Array.prototype.find或Array.prototype.findIndex方法来检查是否存在具有特定uapid的对象。如果找到&#xff0c;…

GraphQL(5):使用Mutations修改数据

GraphQL中的使用Mutation查询&#xff0c;下面介绍详细操作&#xff0c;新建一个mutation.js文件。 1 定义schema 1.1 定义模型对象 &#xff08;1&#xff09;定义输入模型 input AccountInput {name: Stringage: Intsex: Stringdepartment: String} &#xff08;2&#xf…

攻防世界---misc---Ditf

1、题目描述&#xff0c;下载附件&#xff0c;是一张图片 2、打开图片&#xff0c;发现宽高不一样&#xff0c;猜测可能是需要修改宽高&#xff0c;用winhex分析&#xff0c;没有发现奇怪的地方 3、用kali中的binwalk命令&#xff0c;分析图片&#xff0c;发现有个压缩包&#…

基于SpringBoot+Vue二手家电管理平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

【Python基础知识】安装第三方库的两种方式——在线与离线

在线 电脑有网络的情况下&#xff0c;直接换镜像&#xff0c;然后pip install就行。 离线 我遇到了一种情况是&#xff0c;学校里的服务器连不上网&#xff0c;导致没法在线pip install&#xff0c;所以只能通过离线的方式下载。步骤如下&#xff1a; 找一台有网络的电脑&a…