回归预测 | 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

相关推荐
董董灿是个攻城狮几秒前
009:传统计算机视觉之边缘检测
人工智能·计算机视觉·cnn
心之所向h3 小时前
三维卷积( 3D CNN)
深度学习·3d·cnn
从零开始学习人工智能4 小时前
ReLU激活函数在卷积神经网络中的作用
人工智能·神经网络·cnn
SQingL15 小时前
NLP三大特征抽取器(CNN/RNN/TF)
rnn·自然语言处理·cnn
IT古董1 天前
【漫话机器学习系列】033.决策树回归(Decision Tree Regression)
决策树·机器学习·回归
subject625Ruben1 天前
一个简单的调用函数的判断素数Matlab代码
开发语言·matlab
电力程序小学童1 天前
【双层模型】考虑供需双侧的综合能源双层优化模型
matlab·能源·需求响应·综合能源·双层模型
kittygilr1 天前
matlab中几个取整函数的区别
开发语言·matlab
upgrador1 天前
问卷信效度检验:Cronbach‘s α 与 KMO 值计算详解
算法·matlab