数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-11-22 17:49
标题: ELM的回归拟合——基于近红外光谱的汽油辛烷值预测鸢尾花种类识别
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:% _7 l/ u# z& E* j0 D2 ~7 B
6 L+ j# r5 a/ c" x' F
1.数据加载和划分:' L9 a/ L/ c4 Q* h. P5 u( j
* [; t' e/ z1 @) R4 k
2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。
7 j1 g; N3 v( w. ]/ a% {2 Y3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat: T& _& i; ]. a* W* _0 S
  2. % G$ z4 \9 \% n. m  g. {& p
  3. temp = randperm(size(NIR,1));5 `. h# s  S  V. S. X! p

  4. 0 z" `# |, \" N$ Y, ]6 [
  5. P_train = NIR(temp(1:50),:)';
    2 X# F3 k8 A6 ~9 w) y8 }# G7 F" K

  6. , Q( t& b9 y$ H* `/ l. r- Z
  7. T_train = octane(temp(1:50),:)';
    4 ]' W: L  k2 V1 t3 o+ S
  8. 4 f1 Y: w9 _# e/ P8 K  m
  9. P_test = NIR(temp(51:end),:)';
    ; ]+ i: b+ X4 J

  10. 4 x9 m4 U1 p# @8 r" N$ C
  11. T_test = octane(temp(51:end),:)';
    : T2 B2 C+ s# a3 B4 p- b7 Q

  12. # _" |% V( b1 S8 G5 w0 t
  13. N = size(P_test,2);
复制代码
4.数据归一化:( g0 l1 R0 w* z) X

8 I9 C! X) @( s5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);3 V7 C5 m0 _/ v; z5 C
  2. 1 R% y3 K4 D+ G% ^2 C
  3. Pn_test = mapminmax('apply',P_test,inputps);
    6 }: J% @) |2 I. m+ O+ V: W+ j( r. n

  4. 0 Q% a* {4 V. R, e: E, c5 i1 a
  5. [Tn_train,outputps] = mapminmax(T_train);
    2 P8 P" P9 }/ B0 b: i
  6. * d  E* l7 t$ u% ^2 H+ o
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:# ]$ p8 z: ?* `# H) X# H% q
- H2 Q) X  a/ i2 _! v
: K2 N0 ?+ K" e4 M* Z
7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:
+ K- [. d5 C2 v  T4 @7 J! m9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);' K0 G- T& |/ E4 ]- H0 G

  2. ; e8 W# [0 B9 a; K! @  o' H. p
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:" X' M. A4 e1 p0 S0 E
11.将真实值和预测值组合成一个矩阵 result。
6 q2 s; C1 y6 G12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];
    * Q' F8 r6 P" Q9 w1 |
  2. ' v8 N& f; I0 H+ K1 e" n$ U2 M( M
  3. E = mse(T_sim - T_test);# L# Q7 }1 m+ d8 T$ {7 a4 E

  4. * f6 ^" s4 W/ ~/ t
  5. N = length(T_test);
    / [8 N! A6 C- @& L/ \

  6. # H! X7 J: |2 h$ \, `2 C
  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.结果可视化:# H, ]/ b; {! {/ i# h& A7 y9 H; x2 B
14.绘制真实值和预测值的对比图。
. c0 m" _6 h5 N  g0 J  |/ C15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)
    . M9 h0 U, }. ]) G4 ~1 d
  2. + }% C. @9 O. O7 `7 X: b! i
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')
      `- V6 U" U: N; k  Y! r' P
  4. $ w# W/ ~- Y* s0 w5 ~
  5. grid on
    # |9 n; @  X  ~' z

  6. 6 L- N' \5 \* \; M  s2 f: y; v
  7. legend('真实值','预测值')) ]- _/ u2 E- ~; a, r1 y7 i9 @

  8. : |1 W! D/ t4 }
  9. xlabel('样本编号')
    & x* Z6 t" w/ R6 ]) V+ Q1 @
  10. ( I8 o/ v1 |7 e" W
  11. ylabel('辛烷值')! L- ~! h7 V+ O/ X
  12. 7 |- n4 _' q" r% H/ [$ y; i
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};4 P' ]3 Y' p/ ^/ y
  14. " h- l+ O' R3 V! Q
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。
. O2 A! O7 o* F. `) Q
! Z* P, O5 T4 W/ @: ]6 g VeryCapture_20231122173210.jpg
4 F+ K/ W  g& [. {  q' L% n% ^2 w: ?3 ~" O

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

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

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






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