当前位置: 首页 > article >正文

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

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

目录

    • 回归预测 | MATLAB实现CNN-SVM多输入单输出回归预测
      • 预测效果
      • 基本介绍
      • 模型架构
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本介绍

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

卷积神经网络(CNN):
主要用于从输入数据中提取局部特征。通过多个卷积层和池化层,CNN可以有效地捕捉数据中的重要模式和特征。
池化层(如最大池化或平均池化)用于降低特征图的空间维度,减少计算复杂度。
全连接层将高维的特征图展平成一维向量,用于后续的回归任务。
支持向量机(SVM):
在回归任务中,SVM通常用于拟合数据并预测连续值。它通过找到在特征空间中能够划分不同类别的最优超平面来工作,这个概念可以扩展到回归问题中。
为了处理非线性问题,SVM可以使用核函数(如线性核、径向基核、多项式核等)将数据映射到更高维空间,在这个空间中寻找一个线性超平面。

模型架构

多输入层:针对不同的输入变量,设计独立的输入层。这些输入变量可以是图像、文本、时间序列等不同类型的数据。
卷积层:对于图像或其他具有空间结构的数据,使用卷积层提取局部特征。多个卷积层可以逐层提取更抽象、更高级的特征。对于非图像数据,如时间序列数据,可以使用一维卷积层进行特征提取。
池化层:用于降低特征维度,减少计算量,并提高模型的鲁棒性。
全连接层:将卷积层和池化层提取到的特征映射到一个低维的特征空间,并学习到不同特征之间的非线性关系。
SVM回归:全连接层的输出作为SVM回归器的输入。SVM回归器利用提取到的特征进行回归预测,输出最终的预测值。

程序设计

  • 完整代码:MATLAB实现CNN-SVM多输入单输出回归预测
%%  清空环境变量
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


http://www.kler.cn/a/471591.html

相关文章:

  • 【计算机视觉】单目深度估计模型-Depth Anything-V2
  • WebSocket底层原理及 java 应用
  • STM32U575按键转换及设备驱动
  • 如何查看服务器上的MySQL/Redis等系统服务状态和列表
  • C# 服务生命周期:Singleton、Scoped、Transient
  • uni-app:实现普通选择器,时间选择器,日期选择器,多列选择器
  • 云打印之快手打印组件交互协议
  • jenkins入门5 Manage Jenkins
  • PyQt5 UI混合开发,控件的提升
  • Travis CI/CD 功能详解
  • ES中的仓库和快照
  • 快速排序(霍尔法),冒泡排序 【C语言】
  • PHP:PHP脚本通过正则表达式动态修改指定文件下的php文件的sql内容加入指定条件enable_flag = ‘Y‘(“Y“)
  • JSON Schema属性使用汇总
  • Python入门教程 —— 文件操作
  • 对比式机器学习揭示了跨物种共享和特异性的脑功能结构|文献速递-视觉大模型医疗图像应用
  • AI生成前端页面:解放前端开发,拥抱AI时代的高效
  • 【深入理解Mysql】
  • 《Python趣味编程》专栏介绍与专栏目录
  • 常用存储器介绍
  • ros2-4.1 服务通信介绍
  • 【git命令】--- git经典常用操作命令大全
  • 实时计算 Flink 版:赋能数据驱动,让决策快人一步
  • 英语外刊写作积累(2024.09)
  • JavaWeb—Servlet详解
  • Unigui基于vue+elementui的自研框架