LSTM-XGBoost回归预测,多输入单输出(Matlab完整源码和数据)
LSTM-XGBoost回归预测,多输入单输出(Matlab完整源码和数据)
目录
- LSTM-XGBoost回归预测,多输入单输出(Matlab完整源码和数据)
- 效果一览
- 基本介绍
- 程序设计
- 参考资料
效果一览
基本介绍
本期推出一期高创新模型,基于LSTM提取特征后输入XGBoost之中预测,先用先发,不要犹豫!
1.Matlab实现LSTM-XGBoost回归预测,长短期记忆神经网络结合极限梯度提升树回归预测;
2.运行环境为Matlab2020b及以上(注:仅支持Windows 64位系统,需安装MinGW64);
3.data为数据集,输入多个特征,输出单个变量,main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、RMSE、MAE、MAPE、MBE等多指标评价。
代码主要功能
该MATLAB程序实现了一个LSTM-XGBoost混合回归预测模型,核心功能是通过深度学习(LSTM)提取特征,再结合集成学习(XGBoost)进行回归预测,最终评估预测效果。适用于如销量预测、能源负荷预测等。
算法步骤
数据预处理
导入Excel数据(data.xlsx)
随机打乱数据集(增强泛化性)
按7:3划分训练集/测试集
数据归一化(映射到[0,1]区间)
LSTM特征提取
构建LSTM网络:输入层 → LSTM层(64单元)→ ReLU激活 → Dropout层(20%)→ 全连接层
训练LSTM模型(Adam优化器,100轮迭代)
提取全连接层(fc)输出作为新特征
XGBoost回归预测
设置XGBoost参数(100棵树,最大深度5,学习率0.1)
用LSTM提取的特征训练XGBoost模型
预测并反归一化结果
模型评估与可视化
计算多项指标:R²、RMSE、MAE、MAPE、MBE、MSE
绘制预测对比图、误差分布图、线性拟合图
程序设计
完整代码获取私信回复:LSTM-XGBoost回归预测,多输入单输出(Matlab完整源码和数据)
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行%% 导入数据num_samples = length(result); % 样本个数
or_dim = size(result, 2); % 原始特征+输出数目%% 数据集分析
outdim = 1; % 最后一列为输出
num_size = 0.7; % 训练集占数据集比例
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim; % 输入特征维度%% 划分训练集和测试集
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
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);%% 数据平铺
% 将数据平铺成1维数据只是一种处理方式
% 也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
% 但是应该始终和输入层数据结构保持一致
P_train = double(reshape(P_train, f_, 1, 1, M));
P_test = double(reshape(P_test , f_, 1, 1, N));
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718