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/3/27 16:30:17

西门子S7-200 SMART自由通讯例程解析与应用

西门子smart200 自由通讯 2个例程 看图 ,只供参考学习,改为自己需要的程序在自动化控制领域,西门子S7-200 SMART PLC因其灵活性和强大功能被广泛应用。自由通讯功能更是为其拓展了与各类设备交互的能力。今天就给大家分享两个西门子S7-200 S…

作者头像 李华
网站建设 2026/4/3 2:51:12

Markdown转HTML工具推荐,打造专业AI技术博客

PyTorch-CUDA-v2.6 Jupyter/SSH:打造可复现的AI技术博客工作流 在撰写深度学习教程或性能分析文章时,你是否曾遇到这样的尴尬?——本地运行飞快的代码,在读者尝试复现时却报错“CUDA not available”;或是图表精美、逻…

作者头像 李华
网站建设 2026/3/31 1:30:26

DLP 高精度智造典范:Raise3D 3D 打印机,定义精密制造新标准

在追求极致精度与高效生产的制造业变革中,DLP(数字光处理)3D 打印技术凭借其细腻的成型效果、快速的打印速度,成为精密零件制造、原型开发等场景的核心选择。作为全球增材制造领域的领军品牌,Raise3D(复志科…

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

Docker logs查看PyTorch容器运行输出日志

Docker logs查看PyTorch容器运行输出日志 在深度学习项目日益依赖GPU加速的今天,一个常见的开发痛点浮现出来:明明启动了训练脚本,终端却一片空白;或者容器突然退出,却无法登录进去排查原因。这种“黑盒”式的运行体验…

作者头像 李华
网站建设 2026/4/11 0:03:36

路由器网口的作用与选择

路由器网口,作为网络连接的物理接口。也许有人并不清楚它们究竟有何价值?是能直接影响网速?还是决定了什么东西。今天,就和大家来聊聊,这路由器的网口。有哪些作用广域网接口:也就是WAN口,这个通…

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

“不扫兴”的黄晓明 成了《宇宙闪烁请注意》最稳的“快乐底盘”

面对弟弟们“闹太套”的贴脸调侃,黄晓明只是笑着走开,随即用更投入的游戏状态接住了所有抛来的梗。弹幕里齐刷刷飘过:“求一个同款不扫兴大家长!”“77年的黄晓明,对着72年的棣爸,脱口而出喊了一声‘叔叔’…

作者头像 李华