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

相关推荐
t198751282 小时前
广义预测控制(GPC)实现滞后系统控制 - MATLAB程序
开发语言·matlab
victory04313 小时前
llama2 MLP 门控FFN
深度学习·transformer
jllllyuz4 小时前
单载波中继系统资源分配算法综述与实现
开发语言·matlab
bubiyoushang8884 小时前
基于MATLAB的非线性有限元梁扭矩分析实现
开发语言·matlab
Hcoco_me6 小时前
大模型面试题46:在训练7B LLM时,如果使用AdamW优化器,那么它需要的峰值显存是多少?
开发语言·人工智能·深度学习·transformer·word2vec
雍凉明月夜6 小时前
深度学习网络笔记Ⅴ(Transformer源码详解)
笔记·深度学习·transformer
csdn_aspnet7 小时前
MATLAB 高效算法实战:数据分析与算法优化的效率秘诀
算法·matlab·数据分析
肥猪猪爸8 小时前
Langchain实现ReAct Agent多变量工具调用
人工智能·神经网络·机器学习·自然语言处理·langchain·大模型·transformer
byzh_rc9 小时前
[数字信号处理-入门] 采样定理
算法·matlab·信号处理
好奇龙猫9 小时前
【人工智能学习-AI-MIT公开课第 16 讲:支持向量机(SVM)】
人工智能·学习·支持向量机