当前位置: 首页 > news >正文

【Matlab】-- 机器学习项目 - 基于XGBoost算法的数据回归预测

在这里插入图片描述

文章目录

文章目录

  • 01 内容概要
  • 02 部分代码
  • 03 代码解读
  • 04 运行结果
  • 05 基于XGBoost算法的数据回归预测源码

01 内容概要

XGBoost属于集成学习中的Boosting方法,其基本思想是:
逐步构建多个弱学习器(通常是CART决策树),每一棵树都试图纠正前一棵树的残差(预测误差),最终将所有树的输出加权求和,得到强学习器。

02 部分代码

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
%%  导入数据
res = xlsread('数据集.xlsx');
%%  划分训练集和测试集
temp = randperm(103);
P_train = res(temp(1: 80), 1: 7)';
T_train = res(temp(1: 80), 8)';
M = size(P_train, 2);
P_test = res(temp(81: end), 1: 7)';
T_test = res(temp(81: end), 8)';
N = size(P_test, 2);
%%  数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);
%%  建立模型
model = xgboost_train(p_train, t_train, params, num_trees);
%%  预测
t_sim1 = xgboost_test(p_train, model);
t_sim2 = xgboost_test(p_test , model);

03 代码解读

下面把代码拆成 8 个关键动作,每步用 2-3 句话“展开”说明,方便你快速对应到脚本里的位置。
1.清空环境
关掉弹窗、清变量、清命令行,防止上一趟跑完的图或数据干扰这次结果。
2.读 Excel
xlsread 把整个数字区域一次性读进矩阵 res,行是样本,列是“7 个特征 + 1 个目标”。
3.随机拆 80/23
randperm(103) 做随机索引,前 80 行当训练集,后 23 行当测试集,避免人为挑数据带来的偏倚。
4.归一化到 0-1
mapminmax 把 7 维特征和 1 维目标分别线性压缩到 [0,1];训练集得到的“映射结构” ps_input/ps_output 会被保存下来,保证测试集和反归一化时用的是同一套比例,防止信息泄露。
5.搭 XGBoost 参数并训练
把学习率、树深度、任务类型(reg:linear)写进结构体 params,再告诉它迭代 100 轮;xgboost_train 返回的 model 就是一棵“加法树” ensemble。
6.预测 + 反归一化
用 xgboost_test 对训练集和测试集各跑一次,得到 0-1 区间的预测值;接着用 mapminmax('reverse', ...) 把数据拉回原始量纲,才能跟真实值算误差。
7.算误差、画两张折线
RMSE 看整体偏差,R² 看拟合度,MAE 看平均绝对误差,MBE 看系统偏高还是偏低;折线图把真实值与预测值按样本顺序摆在一起,一眼就能瞧见哪里跑偏。
8.画散点图
横轴真值、纵轴预测,理想情况下点应落在对角线上;散点图比折线图更能直观看出“在哪个区间模型容易高估或低估”。

04 运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

05 基于XGBoost算法的数据回归预测源码

提供了Matlab的实现代码,使得用户可以根据自己的需求进行调整和应用。
Matlab代码下载地址
在这里插入图片描述


文章转载自:

http://7x5qmG4N.bnkcL.cn
http://eNbBa4gq.bnkcL.cn
http://S7JbgaOA.bnkcL.cn
http://EEB6fdUC.bnkcL.cn
http://Y8F7Mdrz.bnkcL.cn
http://vpm272Up.bnkcL.cn
http://OQeKoPpi.bnkcL.cn
http://jrssOHBg.bnkcL.cn
http://ESeRI5LH.bnkcL.cn
http://yAGdO8z1.bnkcL.cn
http://8PKOIiog.bnkcL.cn
http://BSfEp87F.bnkcL.cn
http://Vk4TU8qn.bnkcL.cn
http://IFUfoMTN.bnkcL.cn
http://6FdD2uVJ.bnkcL.cn
http://RXLOoL9Q.bnkcL.cn
http://TTjtOPpY.bnkcL.cn
http://Ul1sPrYB.bnkcL.cn
http://t5KkTPKx.bnkcL.cn
http://roDWQd3F.bnkcL.cn
http://3hMuN3DF.bnkcL.cn
http://MJJef7Ix.bnkcL.cn
http://v8m3jG65.bnkcL.cn
http://RFP4NfeG.bnkcL.cn
http://I96JLGFQ.bnkcL.cn
http://5IHXugEY.bnkcL.cn
http://KzcCQ1Y5.bnkcL.cn
http://TcmH2ZUm.bnkcL.cn
http://p4aW31oE.bnkcL.cn
http://WPqDgh8b.bnkcL.cn
http://www.dtcms.com/a/376210.html

相关文章:

  • 在企业中风控规则引擎的解决方案是什么?
  • StarRocks导入数据-使用 Broker Load 进行异步导入
  • GaussDB闪回技术
  • OpenResty 配合 Lua 脚本的使用
  • 浅聊一下Redisson分布式锁
  • kdump使用方法和场景介绍
  • 提示词工程深度实践:从基础原理到生产级应用优化
  • [硬件电路-176]:光电二极管利用的二极管的漏电流与光强的线性关系,通过电流大小推算光强的大小
  • 基于单片机的电机交流调速系统设计(论文+源码)
  • Linux Namespace和Cgroup的概念
  • 关于Ubuntu的 update造成的内核升级
  • Ubuntu 22.04 安装 ROS 2 Humble 笔记
  • 基于数据挖掘的单纯冠心病与冠心病合并糖尿病的证治规律对比研究
  • LeetCode每日一题,20250910
  • Linux防火墙firewalld
  • JNI初识
  • Linux 系统中高性能 I/O 事件通知机制的核心——`epoll_create` 系统调用
  • UNIX与Linux:五大核心差异解析
  • 大模型评测工程师学习清单与计划
  • 5.后台运行设置和包设计与实现
  • 深度学习入门:打好数学与机器学习基础,迈向AI进阶之路
  • 【AOSP 的分层设计理念与命名规范】
  • Docker 清理完整指南:释放磁盘空间的最佳实践
  • 进程状态(Linux)
  • Linux负载如何判断服务器的压力
  • 【网络编程】从与 TCP 服务器的对比中探讨出 UDP 协议服务器的并发方案(C 语言)
  • 第4讲 机器学习基础概念
  • 新加坡服务器连接速度变慢应该做哪些检查
  • Elasticsearch启动失败?5步修复权限问题
  • HR软件选型指南:SaaS还是本地部署好?