【MATLAB第39期】基于MATLAB的多元相关向量回归MRVR和快速FMRVR多输入多输出回归预测算法(多输入多输出数据)

简介: 【MATLAB第39期】基于MATLAB的多元相关向量回归MRVR和快速FMRVR多输入多输出回归预测算法(多输入多输出数据)

MATLAB第39期】基于MATLAB的多元相关向量回归MRVR和快速FMRVR多输入多输出回归预测算法(多输入多输出数据)


一、效果展示


1.FMRVR


2. # of iterations = 10
2. # of iterations = 10
历时 0.590399 秒。
**************************
下列是输出1
**************************
训练集数据的R2为:0.91476
测试集数据的R2为:0.90012
训练集数据的MAE为:107.4164
测试集数据的MAE为:118.6531
训练集数据的MBE为:-5.1681
测试集数据的MBE为:4.579
**************************
下列是输出2
**************************
训练集数据的R2为:0.97846
测试集数据的R2为:0.96061
训练集数据的MAE为:54.173
测试集数据的MAE为:75.3314
训练集数据的MBE为:-0.95966
测试集数据的MBE为:3.0532
**************************
下列是输出3
**************************
训练集数据的R2为:0.88799
测试集数据的R2为:0.91031
训练集数据的MAE为:107.6909
测试集数据的MAE为:122.2654
训练集数据的MBE为:-20.9333
测试集数据的MBE为:-26.701
=================
训练集运行结果
第1个因变量
回归误差 (RMS): 83.4517
估计噪声水平: 0.1827 (true: 0.1622)
第2个因变量
回归误差 (RMS): 95.0044
估计噪声水平: 0.0539 (true: 0.0157)
第3个因变量
回归误差 (RMS): 35.9521
估计噪声水平: 0.4115 (true: 0.4167)
=================
测试集运行结果
第1个因变量
回归误差 (RMS): 69.2293
估计噪声水平: 0.1970 (true: 0.1622)
第2个因变量
回归误差 (RMS): 24.5793
估计噪声水平: 0.0826 (true: 0.0157)
第3个因变量
回归误差 (RMS): 330.102
估计噪声水平: 0.4296 (true: 0.4167)
训练集熵损失 = 15.4545
训练集二次损失 = 335.4603
测试集熵损失 = 40.0038
测试集二次损失 = 1897.5659


2.MRVR

1. # of iterations = 10
1. # of iterations = 10
历时 34.937888 秒。
**************************
下列是输出1
**************************
训练集数据的R2为:0.78223
测试集数据的R2为:0.32016
训练集数据的MAE为:173.4356
测试集数据的MAE为:328.7633
训练集数据的MBE为:-32.7339
测试集数据的MBE为:200.1722
**************************
下列是输出2
**************************
训练集数据的R2为:0.94909
测试集数据的R2为:0.66437
训练集数据的MAE为:85.6813
测试集数据的MAE为:210.3887
训练集数据的MBE为:-22.3859
测试集数据的MBE为:94.008
**************************
下列是输出3
**************************
训练集数据的R2为:0.94538
测试集数据的R2为:0.92513
训练集数据的MAE为:88.4047
测试集数据的MAE为:96.8574
训练集数据的MBE为:0.51131
测试集数据的MBE为:-26.8483
=================
训练集运行结果
第1个因变量
回归误差 (RMS): 111.282
估计噪声水平: 0.9684 (true: 0.9488)
第2个因变量
回归误差 (RMS): 144.32
估计噪声水平: 0.7537 (true: 0.7541)
第3个因变量
回归误差 (RMS): 101.934
估计噪声水平: 0.1996 (true: 0.1938)
=================
测试集运行结果
第1个因变量
回归误差 (RMS): 240.296
估计噪声水平: 1.0334 (true: 0.9488)
第2个因变量
回归误差 (RMS): 48.7849
估计噪声水平: 0.6868 (true: 0.7541)
第3个因变量
回归误差 (RMS): 180.328
估计噪声水平: 0.2048 (true: 0.1938)
训练集熵损失 = 0.015592
训练集二次损失 = 0.032023
测试集熵损失 = 0.13245
测试集二次损失 = 0.30277


二、代码展示


数据为28输入,3输出。共600样本,训练集样本数为500,测试集样本数为100。

%该程序演示了多元相关向量回归(MRVR)和快速fMRVR算法
%=========================================================================
clear, clc, close all;
%% 参数设置
isFast      = true; % true(快速fMRVR)或false(原始MRVR)
maxIts      = 10; % EM算法的最大迭代次数
tolerance   = .1;   % 检验EM算法收敛性的容差值
%%  导入数据
res = xlsread('数据集.xlsx');
%%  划分训练集和测试集
temp = randperm(600);
P_train = res(temp(1: 500), 1 : 28)';
T_train = res(temp(1: 500), 29: 31)';
M = size(P_train, 2);
P_test = res(temp(501: end), 1 : 28)';
T_test = res(temp(501: end), 29: 31)';
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);
% kernel
kernelType  = '+gauss';
kernelWidth = 1.6;
%% RMS和估计噪声水平
disp('=================')
disp('训练集运行结果')
for j = 1:size(Y,2)
  text = '第';
   fprintf([text '%d'  '个因变量\n'],j)
    fprintf('回归误差 (RMS): %g\n', ...
  sqrt(mean((T_train(:,j)-T_sim1(:,j)).^2)))
    fprintf('估计噪声水平: %.4f (true: %.4f)\n\n', ...
        sqrt(OmegaHat(j,j)), noise(j))
        disp('=================')
        disp('测试集运行结果')
        for j = 1:size(Y,2)
        end
            text = '第';
    fprintf([text '%d'  '个因变量\n'],j)
    fprintf('回归误差 (RMS): %g\n', ...
  sqrt(mean((T_test(:,j)-T_sim2(:,j)).^2)))
    fprintf('估计噪声水平: %.4f (true: %.4f)\n\n', ...
        sqrt(OmegaHat1(j,j)), noise(j))
        end
%% 度量协方差矩阵估计的性能
V = size(Y,2); % V是输出维度
temp = (Omega\OmegaHat)'; %Omega是真的,OmegaHat是估计的
temp1 = (Omega\OmegaHat1)'; %Omega是真的,OmegaHat是估计的
loss1 = trace(temp) - log(det(temp)) - V; % %熵损失
loss2 = trace((temp - eye(V))^2); % 二次损失
loss1_1 = trace(temp1) - log(det(temp1)) - V; % %熵损失
loss2_1 = trace((temp1 - eye(V))^2); % 二次损失
disp(['训练集熵损失 = ' num2str(loss1)])
disp(['训练集二次损失 = ' num2str(loss2)])
disp(['测试集熵损失 = ' num2str(loss1_1)])
disp(['测试集二次损失 = ' num2str(loss2_1)])


三、代码获取


后台私信回复“第39期”即可获取下载链接

相关文章
|
1天前
|
算法 测试技术 C++
【动态规划】【矩阵快速幂】【滚动向量】C++算法552. 学生出勤记录 II
【动态规划】【矩阵快速幂】【滚动向量】C++算法552. 学生出勤记录 II
|
1天前
|
机器学习/深度学习 算法
【MATLAB】VMD_ MFE_SVM_LSTM 神经网络时序预测算法
【MATLAB】VMD_ MFE_SVM_LSTM 神经网络时序预测算法
10 2
|
2天前
|
机器学习/深度学习 算法
【MATLAB】小波 MFE_SVM_LSTM 神经网络时序预测算法
【MATLAB】小波 MFE_SVM_LSTM 神经网络时序预测算法
17 4
|
2天前
|
机器学习/深度学习 算法 计算机视觉
基于局部信息提取的人脸标志检测算法matlab仿真
基于局部信息提取的人脸标志检测算法matlab仿真
|
2天前
|
机器学习/深度学习 数据采集 监控
基于yolov2深度学习网络的车辆检测算法matlab仿真,包括白天场景和夜晚场景
基于yolov2深度学习网络的车辆检测算法matlab仿真,包括白天场景和夜晚场景
|
2天前
|
机器学习/深度学习 算法
【MATLAB】ICEEMDAN_ MFE_SVM_LSTM 神经网络时序预测算法
【MATLAB】ICEEMDAN_ MFE_SVM_LSTM 神经网络时序预测算法
16 2
|
1月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
1月前
【数值分析】迭代法求方程的根(附matlab代码)
【数值分析】迭代法求方程的根(附matlab代码)
|
1月前
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
|
1月前
【数值分析】二分法求方程的根(附matlab代码)
【数值分析】二分法求方程的根(附matlab代码)

热门文章

最新文章

相关产品