数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-11-22 17:49
标题: ELM的回归拟合——基于近红外光谱的汽油辛烷值预测鸢尾花种类识别
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:
1 R2 _; E% i$ K9 }, T
3 Y4 E7 H4 R9 ~6 }8 [! F* S2 l% n+ c; r1.数据加载和划分:
( _4 |. q7 V$ m* e/ U8 i9 O, ], J  J" _
2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。
* b4 d/ {( T( S: }$ [7 }0 W- c) l3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat0 @5 b/ A" v) X* d8 R

  2. ; H* W/ j& D' n8 s; G+ h, b" j
  3. temp = randperm(size(NIR,1));
    4 H0 U+ B$ w- F7 {8 w
  4. + {* ~' n% ~* N9 k
  5. P_train = NIR(temp(1:50),:)';
    " X, \+ g4 |  f: O8 D
  6. 8 ?4 [& p* X% @3 v
  7. T_train = octane(temp(1:50),:)';
    / c* M- R( M1 ^8 r) E  I2 Y

  8. 8 I, S9 q, F5 u% z; d# v
  9. P_test = NIR(temp(51:end),:)';6 _. c' @+ m& b( s

  10. 0 A* F- K8 T& L. R
  11. T_test = octane(temp(51:end),:)';7 i% R/ E% M2 }" K$ o
  12. , V+ A/ M2 y+ u/ K/ `; M( L
  13. N = size(P_test,2);
复制代码
4.数据归一化:
2 x, q( f7 f% u& Q6 B% x. J: s2 x5 a8 H% f4 Y+ N2 Q8 `
5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);7 _9 `! T9 E+ H+ f

  2. . m% Y) q* v0 q! L4 k, {
  3. Pn_test = mapminmax('apply',P_test,inputps);
    / |& ^4 p9 `6 _" p$ c

  4. 1 K* r- ?* {8 b
  5. [Tn_train,outputps] = mapminmax(T_train);
    + M1 b! r" T/ o9 l/ G
  6. / h- c0 V% q# F+ r- M. r2 K* J
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:1 c' u3 f) E; M
2 {5 l. N# h- A% F: p$ c) U$ l6 e

. r7 h, ]' i# g. |7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:9 z& ^: f5 u4 _$ a
9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);4 |4 h& y+ Q. e$ H& k
  2. : |$ n& \/ q2 L" L) J- T- Q
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:8 \* ^7 {% M2 D' v
11.将真实值和预测值组合成一个矩阵 result。
, O/ d, G" v- {( ]2 F. w12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];
    7 C! g6 D- I+ ?( _3 |
  2. 8 Y: ^* t$ N7 p  C; b! e8 P* ^
  3. E = mse(T_sim - T_test);3 L2 J* Q1 S" w! q

  4. * x1 j/ V* R  r4 `9 Q& b
  5. N = length(T_test);
    : Y+ v) Q/ z7 i  D$ d8 f

  6. % e' J) Y! R! J6 k5 ?% _
  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.结果可视化:% q1 X1 v6 f" L, w! N0 v$ O! p) T
14.绘制真实值和预测值的对比图。
5 G5 P$ G5 }6 O/ n15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)* X* S( C; [4 J/ I* o) C7 n7 S* X2 T  [; K
  2. 6 ]6 u- g0 i4 i" M, P
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')2 a8 A3 g5 }$ F# x
  4. # H2 I. i0 G6 j) n. M
  5. grid on- v; v9 @# j" m; P

  6. ; x- [3 T$ D5 n% @% t  k8 Z
  7. legend('真实值','预测值')
    * h, q1 ~8 v9 P

  8. * c) c0 ?1 i% `
  9. xlabel('样本编号')$ d& o) z; `' m; R8 r) C# Q

  10. & @1 t& Z- n9 h
  11. ylabel('辛烷值')
    7 r! c" L" l+ x( @  U) v! J

  12. % c  v9 w8 P! A3 _0 ~& x
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};1 G5 R0 _. ?! S" f" U5 }, F6 C
  14. : X* y& b; O7 D1 ]/ N
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。
2 Z5 `1 d+ v: j: E: u
3 F) @; M7 K$ ]% a- ] VeryCapture_20231122173210.jpg
- K# y1 c* `3 r( u' {: m# D, h
* _5 e1 L/ C, o% \* z0 H2 l

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

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

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






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