QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2688|回复: 0
打印 上一主题 下一主题

ELM的回归拟合——基于近红外光谱的汽油辛烷值预测鸢尾花种类识别

[复制链接]
字体大小: 正常 放大

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-11-22 17:49 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:, ], j8 ^6 P) D$ N2 c8 r

1 L% N5 r4 r2 i, V6 w$ U1.数据加载和划分:
! k, s/ a0 l) b" P% S' `, ?. n/ E  b' L0 E
2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。
2 m5 }& k* l" a# J, q3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat. {9 h% T5 N# A# s! i
  2. 2 q/ G9 N/ C6 `7 C( {
  3. temp = randperm(size(NIR,1));/ e; }* n5 p+ U\" ]' ], P: M
  4. $ O2 g7 N6 {* w
  5. P_train = NIR(temp(1:50),:)';. A8 C1 Y- B  S* ]8 T6 b4 z
  6. # ]$ U# R  D# v
  7. T_train = octane(temp(1:50),:)';- V1 D6 A8 u5 B# E, T

  8. , @7 X% J) R0 k
  9. P_test = NIR(temp(51:end),:)';
      p; ^; k& o* D$ w% Z  M, I
  10. . R7 q+ I6 ]2 E
  11. T_test = octane(temp(51:end),:)';\" c& `# i8 N( r3 ]: p: m- C1 @) q
  12. ( ~3 h# l# Z1 ~% ]* g; Q# F3 C
  13. N = size(P_test,2);
复制代码
4.数据归一化:
  ?6 u2 _0 Y) `( Y2 S! }" L2 s  `1 D, O/ L
5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);
    # B\" V3 y  \/ S\" x1 c
  2. - B  K3 L6 `! T/ m
  3. Pn_test = mapminmax('apply',P_test,inputps);
    ( a- s8 m: ?6 x; J

  4. \" o5 v; F. z5 b
  5. [Tn_train,outputps] = mapminmax(T_train);
    % R- w- Z8 \& z0 P% E7 `

  6. \" u3 ?4 H8 L/ `. c2 B: n
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:0 {' |: n" ~) Y

$ I8 U  S8 a) K$ k& P
, E2 ^6 x9 s$ s0 n1 f- B7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:
: _; E( M3 @6 x# i( m' |9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);
    . I8 ~\" {$ L/ ?0 k3 \: V( r. x

  2. ) X$ f9 U8 {% f- P0 g
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:# C2 J  C. J$ I7 r0 E' p7 j4 e
11.将真实值和预测值组合成一个矩阵 result。
$ P( O3 e$ [1 D9 h% X& l* \12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];
    $ q' Z  S& T\" N  O6 T: k# d

  2. 9 o9 @\" Q) [# }
  3. E = mse(T_sim - T_test);: s! V1 y8 z' {  v( l/ O3 e/ C* M- n
  4. 0 `. m/ V\" }! Q2 L2 d
  5. N = length(T_test);
    6 W  \2 b\" b/ E1 I6 c8 B
  6. / B; H! s' R0 x; a! F2 j% [
  7. R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));
复制代码
13.结果可视化:: {! ^& }0 d5 D% _  a9 S: ~
14.绘制真实值和预测值的对比图。' p% i) L- P6 g5 K, }% W, o
15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)# c% D/ F2 L* k: i0 _2 a. c
  2. 0 }& ]( s) y/ A/ e5 t
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')/ u) i1 S5 y# K, M\" D
  4. + X\" N; p' H2 Z. j; }
  5. grid on
    9 H$ C) l0 q  o( c
  6. 2 @) a9 E- v( j0 ^
  7. legend('真实值','预测值')$ m  }# a) C\" A7 ^; Q4 S* _

  8. . P\" y4 u- O3 X: K% |
  9. xlabel('样本编号')/ A- P: u( {/ M/ S( J

  10. 0 G/ k8 P1 h/ r: H
  11. ylabel('辛烷值')
    , L4 B6 X& q0 |
  12. ! }% g7 Q8 S1 l# Q! Q2 K( P
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};
    0 c0 I% D+ b% M9 K

  14. , ?: d\" S5 p8 ]\" u6 K
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。
. F' M  W' o! `6 b1 ]
  F0 t8 c4 H8 n. t4 j6 S VeryCapture_20231122173210.jpg
( e/ ]# h- U$ H" Z( g2 \- {' o4 T7 V: k

chapter30 极限学习机的回归拟合及分类——对比实验研究.rar

171.96 KB, 下载次数: 0, 下载积分: 体力 -2 点

售价: 2 点体力  [记录]  [购买]

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-10 11:49 , Processed in 0.442824 second(s), 55 queries .

回顶部