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

相关推荐
算法如诗3 小时前
【数据融合】基于拓展卡尔曼滤波实现雷达与红外的异步融合附matlab代码
matlab·数据融合
Evand J10 小时前
MATLAB技巧——平滑滤波,给出一定的例程和输出参考
开发语言·matlab
pljnb13 小时前
SVM(支持向量机)
人工智能·机器学习·支持向量机
沅_Yuan1 天前
基于贝叶斯优化的Transformer多输入单输出回归预测模型Bayes-Transformer【MATLAB】
神经网络·matlab·回归·贝叶斯·transformer·回归预测
88号技师2 天前
【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码
开发语言·机器学习·matlab·时序分析·故障诊断·信息熵·特征提取
The hopes of the whole village2 天前
matlab 绘图
开发语言·matlab·信息可视化
程高兴2 天前
基于Matlab的车牌识别系统
开发语言·matlab
XuX032 天前
手搓雷达图(MATLAB)
matlab·贴图
freexyn3 天前
Matlab自学笔记五十一:(推荐)输入参数的数量和可变数量的输入
笔记·算法·matlab
不吃酸的柠檬3 天前
MATLAB 中的图形绘制
人工智能·机器学习·matlab