回归预测 | MATLAB实现CNN-SVM多输入单输出回归预测

回归预测 | MATLAB实现CNN-SVM多输入单输出回归预测

目录

预测效果



基本介绍

CNN-SVM多输入单输出回归预测是一种结合卷积神经网络(CNN)和支持向量机(SVM)的混合模型,用于处理和预测具有多输入单输出特性的数据。

卷积神经网络(CNN):

主要用于从输入数据中提取局部特征。通过多个卷积层和池化层,CNN可以有效地捕捉数据中的重要模式和特征。

池化层(如最大池化或平均池化)用于降低特征图的空间维度,减少计算复杂度。

全连接层将高维的特征图展平成一维向量,用于后续的回归任务。

支持向量机(SVM):

在回归任务中,SVM通常用于拟合数据并预测连续值。它通过找到在特征空间中能够划分不同类别的最优超平面来工作,这个概念可以扩展到回归问题中。

为了处理非线性问题,SVM可以使用核函数(如线性核、径向基核、多项式核等)将数据映射到更高维空间,在这个空间中寻找一个线性超平面。

模型架构

多输入层:针对不同的输入变量,设计独立的输入层。这些输入变量可以是图像、文本、时间序列等不同类型的数据。

卷积层:对于图像或其他具有空间结构的数据,使用卷积层提取局部特征。多个卷积层可以逐层提取更抽象、更高级的特征。对于非图像数据,如时间序列数据,可以使用一维卷积层进行特征提取。

池化层:用于降低特征维度,减少计算量,并提高模型的鲁棒性。

全连接层:将卷积层和池化层提取到的特征映射到一个低维的特征空间,并学习到不同特征之间的非线性关系。

SVM回归:全连接层的输出作为SVM回归器的输入。SVM回归器利用提取到的特征进行回归预测,输出最终的预测值。

程序设计

clike 复制代码
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc  
addpath(genpath(pwd))
%% 导入数据
data =  readmatrix('day.csv');
data = data(:,3:16);
res=data(randperm(size(data,1)),:);    %此行代码用于打乱原始样本,使训练集测试集随机被抽取,有助于更新预测结果。
num_samples = size(res,1);   %样本个数


% 训练集和测试集划分
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);

%%  数据平铺
trainD =  double(reshape(p_train,size(p_train,1),1,1,size(p_train,2)));
testD  =  double(reshape(p_test,size(p_test,1),1,1,size(p_test,2)));
targetD =  t_train;
targetD_test  =  t_test;

参考资料

1 https://blog.csdn.net/kjm13182345320/article/details/128267322?spm=1001.2014.3001.5501

2 https://blog.csdn.net/kjm13182345320/article/details/128234920?spm=1001.2014.3001.5501

相关推荐
2zcode1 小时前
基于MATLAB图像处理的啤酒瓶口缺陷检测系统设计与实现
开发语言·图像处理·matlab
matlab代码18 小时前
基于matlab人脸疲劳驾驶检测系统(可使用其它人脸视频)【源码39期】
开发语言·matlab·人脸疲劳检测
matlab代码21 小时前
基于matlab人脸门禁识别系统(可增加其它人脸图像)源码40期】
开发语言·matlab·人脸识别·人脸门禁
民乐团扒谱机1 天前
【微实验】从迷雾中看清世界:卡尔曼滤波的数学诗意与MATLAB实践
人工智能·算法·matlab·卡尔曼滤波·kalman
2zcode1 天前
基于MATLAB图像处理的细胞检测与计数分析系统设计与实现
图像处理·人工智能·matlab
2zcode2 天前
基于MATLAB图像处理的饮料瓶灌装液位检测系统设计与实现
开发语言·图像处理·matlab
leo__5202 天前
基于导航数据的扩展卡尔曼滤波(EKF)MATLAB 实现
开发语言·matlab
2601_963645922 天前
【2026最新】MATLAB教程(附安装包,非常详细)
开发语言·matlab·信息可视化
Mister Leon2 天前
视频时序数据处理:CNN+LSTM
cnn·音视频·lstm
通信仿真爱好者2 天前
第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章
算法·matlab·mimo·信号检测