기술나눔

Transformer-LSTM 예측 | Matlab은 Transformer-LSTM 다변수 시계열 예측을 구현합니다.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Transformer-LSTM 예측 Matlab은 Transformer-LSTM을 구현합니다.다변량 시계열 예측

효과 목록

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

기본 소개

1. Matlab은 Transformer-LSTM 다변수 시계열 예측을 구현하고 Transformer는 LSTM 장단기 메모리를 결합합니다.신경망다변량 시계열 예측

2. 운영 환경은 Matlab2023b 이상입니다.

3.데이터는데이터 세트, 여러 특성 입력, 단일 변수 출력, 과거 특성의 영향 고려, 다중 변수 시계열 예측, main.m이 기본 프로그램입니다. 실행하기만 하면 모든 파일이 하나의 폴더에 배치됩니다.

4. 명령 창은 R2, MSE, RMSE, MAE, MAPE 및 MBE와 같은 여러 인덱스 평가를 출력합니다.

여기에 이미지 설명을 삽입하세요.

프로그램 작성

  • 완전한 프로그램 및 데이터 다운로드 개인 메시지 블로거 답변Matlab은 Transformer-LSTM 다변수 시계열 예측을 구현합니다.


%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

%%  导入数据
result = xlsread('data.xlsx');

%%  数据分析
num_samples = length(result);  % 样本个数
or_dim = size(result, 2);      % 原始特征+输出数目
kim =  2;                      % 延时步长(kim个历史数据作为自变量)
zim =  1;                      % 跨zim个时间点进行预测



%%  数据集分析
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);

%%  数据平铺
P_train =  double(reshape(P_train, f_, 1, 1, M));
P_test  =  double(reshape(P_test , f_, 1, 1, N));

t_train = t_train';
t_test  = t_test' ;

%%  数据格式转换
for i = 1 : M
    p_train{i, 1} = P_train(:, :, 1, i);
end

for i = 1 : N
    p_test{i, 1}  = P_test( :, :, 1, i);
end


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

참고자료

[1] https://blog.csdn.net/kjm13182345320/아트/세부정보/128163536?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/아트/세부정보/128151206?spm=1001.2014.3001.5502