独家原创!利用CNN-ELM实现多变量回归预测!无需更改代码直接替换Excel数据即可用!

      今天为大家带来一期CNN-ELM实现多变量回归预测代码,独家原创!直接提供代码!知网用的人还很少!适合作为创新点!直接替换Excel数据即可用!具体代码已放在最后,需要代码的朋友可直接拉到最后~

原理简介

1.卷积神经网络(CNN)

什么是CNN:

CNN是一种深度学习模型,特别擅长处理图像数据。它通过卷积层自动从数据中提取特征,这些特征对于完成如分类或回归任务非常有用。

工作原理:

CNN通过一系列的卷积层、池化层(用于降维)和全连接层(决策层)工作。在卷积层,模型使用小的滤波器窗口在输入数据上滑动,计算窗口内数据和滤波器的点积,以此提取特征。

2.极限学习机(ELM)

什么是ELM:

ELM是一种快速的单隐层前馈神经网络,用于分类和回归。它的特点是隐藏层的权重初始化后不再调整,只需要计算输出层权重,大大加快了训练速度。

工作原理:

在ELM中,数据通过一个随机生成并固定不变的隐藏层传递,然后直接计算输出层的权重。这种方式简化了学习过程,因为它避免了复杂的反向传播过程。

3.CNN-ELM的结合

结合原理:

CNN-ELM通过将CNN的强大特征提取能力与ELM的快速学习速度相结合,来进行回归预测。首先,使用CNN自动从输入数据中提取重要特征。然后,这些特征被送入ELM来进行快速的回归预测。

工作流程:

简单来说,就是先用CNN学习输入数据的深层次特征,再将这些特征作为ELM的输入,利用ELM快速得到回归预测的结果。

4.优势

1.高效的特征提取:CNN能够自动并有效地从大量数据中提取有用特征。

2.快速训练:借助ELM,CNN-ELM可以实现迅速的训练过程,因为ELM避免了耗时的反向传播算法。

3.适用性广:结合了CNN和ELM的优点,使得CNN-ELM在处理各种回归问题时都表现出色,特别是在图像和序列数据上。

4.泛化能力强:通过有效的特征提取和快速训练,CNN-ELM能够在未见过的数据上也取得很好的预测效果。

实现步骤

 1.导入数据

%% 导入数据res = xlsread('数据集.xlsx');%%  数据分析num_size = 0.8;                              % 训练集占数据集比例outdim = 1;                                  % 最后一列为输出num_samples = size(res, 1);                  % 样本个数res = res(randperm(num_samples), :);         % 打乱数据集(不希望打乱时,注释该行)num_train_s = round(num_size * num_samples); % 训练集样本个数f_ = size(res, 2) - outdim;                  % 输入特征维度

数据格式如下:Excel格式,最后一列放输出,前面几列放特征即可,特征数量可以不同,非常方便!

 2.数据归一化

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

 3.构造CNN网络结构

 4.ELM预测

%%  创建模型num_hiddens = 30;        % 隐藏层节点个数activate_model = 'sig';  % 激活函数[IW, B, LW, TF, TYPE] = elmtrain(p_train, t_train, num_hiddens, activate_model, 0);%%  仿真测试t_sim1 = elmpredict(p_train, IW, B, LW, TF, TYPE);t_sim2 = elmpredict(p_test , IW, B, LW, TF, TYPE);

结果展示

最后进行画图,一共9张图,可完全满足您的需求!这边挑选其中的几张图~

%%  训练集绘图figureplot(1:M,T_train,'r-*',1:M,T_sim1,'b-o','LineWidth',1.5)legend('真实值','CNN-ELM预测值')xlabel('预测样本')ylabel('预测结果')string={'训练集预测结果对比';['(R^2 =' num2str(R1) ' RMSE= ' num2str(error1) ' MSE= ' num2str(mse1) ' RPD= ' num2str(RPD1) ')' ]};title(string)set(gcf,'color','w')%% 预测集绘图figureplot(1:N,T_test,'r-*',1:N,T_sim2,'b-o','LineWidth',1.5)legend('真实值','CNN-ELM预测值')xlabel('预测样本')ylabel('预测结果')string={'测试集预测结果对比';['(R^2 =' num2str(R2) ' RMSE= ' num2str(error2)  ' MSE= ' num2str(mse2) ' RPD= ' num2str(RPD2) ')']};title(string)set(gcf,'color','w')

完整代码:

点击下方小卡片,后台回复关键字,不区分大小写:

CNNELM

其他更多需求或想要的代码均可点击下方小卡片后后台私信,看到后会秒回~

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值