Transformer+BO-SVM多变量时间序列预测(Matlab)

Transformer+BO-SVM多变量时间序列预测(Matlab)

目录

效果一览






基本介绍

本期推出一期高创新模型,基于Transformer提取时序特征后输入SVM之中预测,同时采用贝叶斯算法选择最佳的SVM核函数参数c和g,模型支撑风电预测、光伏预测、交通预测、股票预测等领域,先用先发,不要犹豫!

1.Transformer+BO-SVM多变量时间序列预测,Transformer+BO-SVM/Bayes-SVM(程序可以作为论文创新支撑,目前尚未发表);

2.Transformer提取特征后,贝叶斯算法选择最佳的SVM核函数参数c和g,运行环境为Matlab2023b及以上;

3.data为数据集,输入多个变量,输出单个变量,考虑历史特征的影响,main.m为主程序,运行即可,所有文件放在一个文件夹;

4.命令窗口输出R2、MSE、RMSE、MAE、MAPE、MBE等多指标评价;

程序设计

  • 完整程序和数据获取方式私信博主回复Transformer+BO-SVM多变量时间序列预测(Matlab)。
clike 复制代码
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行



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);

%%  仿真预测
[t_sim1, error_1] = svmpredict(t_train, p_train, model);
[t_sim2, error_2] = svmpredict(t_test , p_test , model);

%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);

T_sim1 = T_sim1';
T_sim2 = T_sim2';

%% 测试集结果
figure;
plotregression(T_test,T_sim2,['回归图']);
figure;
ploterrhist(T_test-T_sim2,['误差直方图']);

%%  均方根误差 RMSE
error1 = sqrt(sum((T_sim1 - T_train).^2)./M);
error2 = sqrt(sum((T_test - T_sim2).^2)./N);

%%
%决定系数
R1 = 1 - norm(T_train - T_sim1)^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test -  T_sim2)^2 / norm(T_test -  mean(T_test ))^2;

%%
%均方误差 MSE
mse1 = sum((T_sim1 - T_train).^2)./M;
mse2 = sum((T_sim2 - T_test).^2)./N;

%%
%RPD 剩余预测残差
SE1=std(T_sim1-T_train);
RPD1=std(T_train)/SE1;

SE=std(T_sim2-T_test);
RPD2=std(T_test)/SE;

%% 平均绝对误差MAE
MAE1 = mean(abs(T_train - T_sim1));
MAE2 = mean(abs(T_test - T_sim2));

% MBE
MBE1 = sum(T_sim1 - T_train) ./ M ;
MBE2 = sum(T_sim2 - T_test ) ./ N ;

%% 平均绝对百分比误差MAPE
MAPE1 = mean(abs((T_train - T_sim1)./T_train));
MAPE2 = mean(abs((T_test - T_sim2)./T_test));

参考资料

1\] https://blog.csdn.net/kjm13182345320/article/details/127931217 \[2\] https://blog.csdn.net/kjm13182345320/article/details/127418340

相关推荐
Thomas_Cai3 小时前
Bert论文解析
人工智能·深度学习·nlp·bert·transformer
机器学习之心6 小时前
TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测(Matlab完整源码和数据)
神经网络·matlab·lstm·多变量时间序列预测·tcn-lstm·时间卷积长短期记忆神经网络
xuebodx09237 小时前
私有部署stable-diffusion-webui
图像处理·pytorch·ai作画·stable diffusion·视觉检测·transformer·dall·e 2
xy_optics11 小时前
Unet网络的Pytorch实现和matlab实现
网络·pytorch·matlab
xy_optics12 小时前
用matlab搭建一个简单的图像分类网络
网络·matlab·分类
机器学习之心13 小时前
回归预测 | Matlab实现NRBO-Transformer-GRU多变量回归预测
matlab·回归·transformer·多变量回归预测
xy_optics19 小时前
用matlab探索卷积神经网络(Convolutional Neural Networks)-3
开发语言·matlab·cnn
weixin_4284984920 小时前
使用MATIO库写入MATLAB结构体(struct)数据的示例程序
matlab
weixin_428498491 天前
将MATLAB神经网络数据转换为C/C++进行推理计算
c语言·神经网络·matlab