数学建模社区-数学中国

标题: ELM的回归拟合——基于近红外光谱的汽油辛烷值预测鸢尾花种类识别 [打印本页]

作者: 2744557306    时间: 2023-11-22 17:49
标题: ELM的回归拟合——基于近红外光谱的汽油辛烷值预测鸢尾花种类识别
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:
( l7 g5 M* H6 D" i# H' O$ d- {; s
1.数据加载和划分:
! O+ ?% z- P/ A5 ~6 f
% _% {: L) [* i, N1 d& v. l2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。( R* J. n7 M$ T, B+ a, K
3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat
    * d/ H. R  n. k/ e+ X' N( h& p

  2. : d9 \! y  a& A. C
  3. temp = randperm(size(NIR,1));& r* j* _6 ~3 r9 J6 ]+ i! ]: U

  4. * W# h8 K  ~$ i  ^. x( T
  5. P_train = NIR(temp(1:50),:)';
    & p$ [; v0 k$ ~/ C

  6. ) q. ]1 g! x1 P2 b* j) U5 L
  7. T_train = octane(temp(1:50),:)';
    % g& J  `3 w9 c3 |) m. K

  8. 9 B0 ]9 O8 O$ l+ m6 Z4 \: ^$ ~; N$ z
  9. P_test = NIR(temp(51:end),:)';3 p, N+ @9 E+ y# v# L% u% t
  10. - m- C% N- `6 o2 g5 q* C: g' t3 r( I
  11. T_test = octane(temp(51:end),:)';7 y+ A- Q  ~( Z0 Y1 t/ M6 ]
  12. ! o; x. T3 u  E" T, m- U" `
  13. N = size(P_test,2);
复制代码
4.数据归一化:& O. N* P, ^0 `; d

' V1 m- I- L8 }' k+ F- q5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);' i5 H2 h8 _% W9 s' F0 ]
  2. 5 E8 e1 ]$ ~" N
  3. Pn_test = mapminmax('apply',P_test,inputps);5 ~) e3 b3 ~1 G1 \% f# C
  4. ; ?4 b; g( Q2 A0 n
  5. [Tn_train,outputps] = mapminmax(T_train);8 K' w7 M9 t0 {. {4 D
  6. ' ~4 {6 V* \& F( n
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:, I7 N2 j" z; O7 W% r
: n. D# [! t4 V9 M( F7 Q9 \

" M3 C+ L1 s" Y5 m0 c' e7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:
! O7 b) R: X2 `9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);
    5 |8 ?$ O+ x% V7 _+ `% \* A

  2. 0 H6 T. j8 X. S$ U* h
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:
, t3 V" |. e5 Q. \11.将真实值和预测值组合成一个矩阵 result。
7 J; c" s3 F* `5 _3 }  U12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];- w) \; g, X0 }/ C9 n! T- }8 R$ ]
  2. $ z: `3 d% j1 C9 ^% ]% C5 W: x
  3. E = mse(T_sim - T_test);
    0 G/ s5 J' j8 R5 }/ S6 |& f" z

  4. " J5 B. \, l! V+ V, |/ b# _
  5. N = length(T_test);
    0 Q: ?& c; @8 U

  6. $ g% W% l, Z4 K7 n5 k5 e
  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.结果可视化:
( E0 L: {9 F6 i2 a) u& N' ~14.绘制真实值和预测值的对比图。
- O9 l) A3 J/ A- H15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)
    8 h! f% k9 K5 w4 K( j
  2. % c1 A, a, J$ h
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')
    2 u0 h) G' s% W- Z' f
  4. 0 R; C7 |! m' u. V% q6 x
  5. grid on
    8 }: o$ r% m! f
  6. : ?7 Z! u% v5 B0 R" T9 v1 z
  7. legend('真实值','预测值')" q. Y  z4 W" _' W8 I+ f( b7 Y0 ?8 r
  8. 6 u  s  k3 j: g7 R0 F
  9. xlabel('样本编号')7 w: Y5 u  P" e; |1 }" O

  10.   V& s0 j+ P1 c8 s
  11. ylabel('辛烷值')
    1 J5 d2 p) T" P% r7 C+ _% D

  12. 0 \; m! Z7 k6 _! d/ P6 Z& g+ x
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};
    ) ?4 Z* Q3 e: b

  14. 0 q' y* q! ~& O* V! l( D! \
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。
& n3 T, h* M. d% Q2 U' g( p; ]
7 a4 P: P3 c- @0 I7 `4 J( b% W VeryCapture_20231122173210.jpg
5 N8 @8 ]9 [; `6 c7 a$ f
  N: }7 _+ X) m& q: {& ^6 i) n: f

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

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

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






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5