数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-11-22 17:49
标题: ELM的回归拟合——基于近红外光谱的汽油辛烷值预测鸢尾花种类识别
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:
  I  D! J4 m2 @
6 Z5 ^8 |  `, f0 R1.数据加载和划分:) k% H! n" t* |: B3 o$ i: c8 p9 V
( `# a5 [- ?+ M3 \$ }
2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。
: l' x+ ?. L# t5 e2 Z& ~! D0 ?7 L1 ?3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat
    9 L0 V7 [+ P! `2 l# k$ V
  2. 4 p$ N4 ~4 X% B/ V9 l$ W5 D
  3. temp = randperm(size(NIR,1));
    ) U2 a5 v) Y/ T. k2 l7 h- o
  4. 2 Y) B! ?6 f, N7 a/ c* T) d, Y6 t, G
  5. P_train = NIR(temp(1:50),:)';
      `! m$ X4 z+ G: ^- j6 h3 t( k/ i

  6. ! q6 C. r7 F9 p$ Y8 j
  7. T_train = octane(temp(1:50),:)';8 _- F0 j% w$ M

  8. 1 T. Y  v  c1 d8 x: d9 N: o6 O
  9. P_test = NIR(temp(51:end),:)';
    1 B- }% `4 N5 r% g" K! ~" o
  10. 9 m  U9 P' |- E
  11. T_test = octane(temp(51:end),:)';
    ! I& w5 g- O" e7 e6 V/ A* F2 N
  12. / Q8 z6 W, D5 K' ]5 f/ j
  13. N = size(P_test,2);
复制代码
4.数据归一化:6 {9 B3 ~3 v+ l% A" A# p
7 M9 F1 \, s0 S; s; k+ D6 @; J2 ?/ ]
5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);3 G( W  @6 ^. z; s5 L  o

  2. " d, e& `2 c, A- O* M( d
  3. Pn_test = mapminmax('apply',P_test,inputps);
    1 T2 b  |9 D2 ]$ [* V- ^( Y
  4. 0 o% X6 R- [7 s) R: ]7 V
  5. [Tn_train,outputps] = mapminmax(T_train);
    , c3 o& `  v1 H7 r/ t7 |% C
  6. 2 U: }, }0 s' b- K& }" X* z
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:
' T2 j+ G9 v2 B1 d
1 ?( p. b/ ~, B* p" I" J, N* E" m& u* ]8 P. v7 R, T3 ]+ G
7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:: w! B0 f/ S. R$ K
9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);1 V  E3 q2 i7 ], K4 f9 t. ?' [
  2. & u/ L: n2 T, x% N7 Y
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:: y$ U" z) c* V; U" ?
11.将真实值和预测值组合成一个矩阵 result。
, k8 Q0 s- g" D5 J4 R5 K12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];9 D1 G1 [" k% ^7 X: ^

  2. " s2 U0 T! n! f
  3. E = mse(T_sim - T_test);! c4 R0 N9 e1 G* P2 a7 S

  4. + s2 x8 @4 |  t
  5. N = length(T_test);
    4 ?* B* f. `' t
  6. 8 P/ l+ G7 v# y2 n5 ^
  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.结果可视化:! n* }# r/ g, n8 b: E) ]
14.绘制真实值和预测值的对比图。( V5 Z# `5 |- t# u
15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)0 n$ F& h+ E2 u/ M
  2. ; c, K7 U+ F1 C/ z: i8 u
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')8 V$ V3 E$ _- l' {
  4. + W9 L' B9 _$ B1 j$ {8 U0 z3 o
  5. grid on" }) s$ e  W0 J3 b. L$ a
  6. & @& e; x2 r9 S' `0 a
  7. legend('真实值','预测值')
    # G  i3 I' G' T! V
  8. ! d( p8 o% u, A5 L
  9. xlabel('样本编号')% H4 |' M# u4 V$ H' n

  10. + z" l) N/ F8 n& h0 C; H7 ?$ Y7 S$ C
  11. ylabel('辛烷值')
    / g+ q4 T4 y- V  u8 l& @

  12. / V& G+ I. o) z) x# o4 _- n
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};% r( n- G8 b& D! K* h/ S

  14. $ r5 i6 D$ K. j  P* N- T
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。
& d6 j/ [5 e9 F8 x$ O; Y8 Y4 l
# ?' t" @* K$ i! { VeryCapture_20231122173210.jpg
* v( w" j  x8 X8 {3 N
: J6 L, c( L! U, S

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

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

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






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