news 2026/4/15 8:55:06

用 XGBoost 模型进行时间序列单输入单输出预测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 XGBoost 模型进行时间序列单输入单输出预测

XGboost模型做时间序列单输入单输出预测模型,要求数据是单列的时间序列数据,直接替换数据就可以用。 程序语言是matlab,需求最低版本为2018及以上。 程序可以出真实值和预测值对比图,可打印多种评价指标。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替换就可以得到自己满意的效果。

最近在处理时间序列数据预测问题,发现 XGBoost 模型是个很不错的选择。它在很多数据竞赛和实际项目中都展现出强大的性能。今天就来分享一下如何用 Matlab 实现基于 XGBoost 模型的时间序列单输入单输出预测,而且这个程序只需要单列的时间序列数据,直接替换数据就能用啦。

准备工作

这里使用的 Matlab 版本最低要求是 2018 及以上。如果你还没安装 XGBoost 相关的 Matlab 接口,可以参考相关资料进行安装。

代码实现

% 加载数据 data = readtable('your_data.csv'); % 请将 'your_data.csv' 替换为你的实际数据文件名 time_series = data{:, 1}; % 假设数据只有一列,提取时间序列数据 % 划分训练集和测试集 train_size = floor(0.8 * length(time_series)); % 80% 作为训练集 train_data = time_series(1:train_size); test_data = time_series(train_size+1:end); % 准备训练数据 train_X = train_data(1:end-1); train_y = train_data(2:end); % 准备测试数据 test_X = test_data(1:end-1); test_y = test_data(2:end); % 训练 XGBoost 模型 model = fitrgxgb(train_X', train_y', 'NumBoostedTrees', 100); % 进行预测 predictions = predict(model, test_X'); % 绘制真实值和预测值对比图 figure; plot(1:length(test_y), test_y, 'b', 'DisplayName', '真实值'); hold on; plot(1:length(predictions), predictions, 'r--', 'DisplayName', '预测值'); title('真实值和预测值对比'); xlabel('样本序号'); ylabel('值'); legend; hold off; % 计算评价指标 mae = mean(abs(test_y - predictions)); mse = mean((test_y - predictions).^2); rmse = sqrt(mse); r2 = 1 - sum((test_y - predictions).^2) / sum((test_y - mean(test_y)).^2); % 打印评价指标 fprintf('平均绝对误差 (MAE): %.4f\n', mae); fprintf('均方误差 (MSE): %.4f\n', mse); fprintf('均方根误差 (RMSE): %.4f\n', rmse); fprintf('决定系数 (R^2): %.4f\n', r2);

代码分析

数据加载与划分

首先,使用readtable函数读取我们的时间序列数据。这里假设数据存储在 CSV 文件中,并且只有一列。然后将数据按 80% 和 20% 的比例划分为训练集和测试集。

数据准备

对于时间序列预测,我们需要将数据转换为适合模型训练的格式。这里将前一个时间步的值作为输入特征,后一个时间步的值作为目标值。这样就得到了训练数据trainXtrainy以及测试数据testXtesty

模型训练

使用fitrgxgb函数训练 XGBoost 回归模型。NumBoostedTrees参数指定了提升树的数量,这里设置为 100。

预测与绘图

使用训练好的模型对测试数据进行预测,得到预测值predictions。然后使用plot函数绘制真实值和预测值的对比图,方便我们直观地观察预测效果。

评价指标计算与打印

计算了平均绝对误差(MAE)、均方误差(MSE)、均方根误差(RMSE)和决定系数(R²)这几个常用的评价指标,并使用fprintf函数将它们打印出来,帮助我们评估模型的性能。

需要注意的是,由于每个人的数据都是独一无二的,所以无法保证直接替换数据就能得到自己满意的效果。不过这个程序提供了一个基本的框架,你可以根据自己的数据特点进行调整和优化。

希望这篇文章能帮助你用 XGBoost 模型进行时间序列预测,快去试试吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/5 22:57:40

从零开始写AI博客:用PyTorch训练模型并生成Markdown输出

从零开始写AI博客:用PyTorch训练模型并生成Markdown输出 在深度学习项目中,最让人头疼的往往不是模型设计本身,而是环境配置——明明代码没问题,却因为CUDA版本不匹配、cuDNN缺失或PyTorch与Python版本冲突导致训练跑不起来。这种…

作者头像 李华
网站建设 2026/4/12 21:39:12

计算机Java毕设实战-基于SpringBoot的私房菜上门定制系统的设计与实现私房菜定制以及厨师上门服务的平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/12 16:41:46

改进粒子群算法求解微电网优化调度问题

matlab代码:改进粒子群算法求解微电网优化调度问题 增加了麻雀优化算法,改进麻雀算法进行求解的对比 代码有详细注释,可直接运行,有参考文献 微电网优化调度的模型是以风、光、储能装置、微型燃气轮机、燃料电池等组成的系统的优…

作者头像 李华
网站建设 2026/4/14 15:23:39

基于YOLOv11的跌倒识别检测系统(YOLOv11深度学习+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文设计并实现了一种基于深度学习YOLOv11的跌倒识别检测系统,旨在通过实时目标检测技术识别跌倒行为,提升公共安全与老年监护能力。系统采用YOLOv11模型,针对三类目标(fallen跌倒后、falling跌倒中、stand站立状态…

作者头像 李华
网站建设 2026/4/10 14:41:45

无需手动编译!PyTorch-CUDA基础镜像一键启动AI项目

无需手动编译!PyTorch-CUDA基础镜像一键启动AI项目 在深度学习项目开发中,最让人头疼的往往不是模型设计或调参,而是环境配置——“为什么代码在我机器上跑得好好的,换台设备就报错?”这种问题几乎成了每个AI工程师都经…

作者头像 李华