QQ登录

只需要一步,快速开始

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

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

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

1188

主题

4

听众

2931

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-11-22 17:49 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:( `" X- O8 j. J' Z9 Y6 E$ Y
9 _# P2 k9 b+ U. f$ ^/ n" p" v6 ~
1.数据加载和划分:9 k9 J! R' L, }. H6 m/ f& l

1 h' n% {$ u6 S2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。7 }3 |, c% A, i! A; z6 p/ L, _
3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat
    9 L\" N0 H' T/ M3 P8 v/ Y9 k
  2. ' y0 R2 k, K! `+ F; x
  3. temp = randperm(size(NIR,1));
    ) F0 M. v* [3 h2 u5 V

  4. + x) P: M; b; F
  5. P_train = NIR(temp(1:50),:)';1 A$ x, ~% G. \( U  v
  6. & ?& \. N7 `- S' u+ k  W& F
  7. T_train = octane(temp(1:50),:)';& N% z& H. k$ g

  8. 8 @9 ?6 k, _+ k0 B( e9 g4 I
  9. P_test = NIR(temp(51:end),:)';
    ( @% {( F0 T) M6 v1 y2 k# X

  10. . s3 o; l+ U. `* z9 X
  11. T_test = octane(temp(51:end),:)';
    $ w0 j9 ]; r# h) _

  12. ; C! R2 u* p1 ~- L/ s
  13. N = size(P_test,2);
复制代码
4.数据归一化:
" Z$ b" i* P6 `3 @) ]6 I2 p. b# u* s) ]8 \, M% u/ A- q) v
5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);
    : |' v1 O: A0 x0 c7 O6 k, p
  2. % F; T0 K* e6 x5 D5 M. K, ^; ^* d
  3. Pn_test = mapminmax('apply',P_test,inputps);4 ], J) K2 v/ s' A: i& I' d

  4. + Z% q( E+ t: p
  5. [Tn_train,outputps] = mapminmax(T_train);
    ; d. [9 d\" U: G, F

  6. ; S% M, ], J; d5 z
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:* ]' V2 Q9 ^" n

  q' C: D9 g' x# Q) Q7 j: H% C
2 b* {6 j8 [8 h% k7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:
. d5 |- b8 p' |9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);
    8 ?* S3 {- Q* N  f, c\" [

  2. & V1 U8 G/ J3 B3 x8 ?
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:
4 F+ |+ Z& H0 j: ~# B11.将真实值和预测值组合成一个矩阵 result。, y3 Q5 V4 F8 n$ |
12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];7 v5 c7 R  m( [- n6 P( x. C  F
  2. % Y% o& G0 b* M  X# o
  3. E = mse(T_sim - T_test);! a2 p9 w& O0 _* K+ J0 l: t

  4. 0 V1 h# i0 j, q6 C2 O, F3 e
  5. N = length(T_test);
    ( ]1 y( F3 v\" q$ o0 F& V
  6. : C5 e5 z$ D\" t4 x
  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.结果可视化:
7 q5 `  }% [# ^4 Y: E14.绘制真实值和预测值的对比图。5 d& T; |7 |! C; m& n! L
15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)
    2 K7 X  E+ Z# o6 c, L
  2. ; F) T6 B5 [2 N; `; l\" I
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')
    3 v; C\" q2 A0 g' D
  4. # m* ^* z: ^# L1 w1 Z4 A0 L8 C
  5. grid on\" x9 @2 v8 o! b( D% L( e

  6. ; y( W; x# T: F  C( A3 N& [
  7. legend('真实值','预测值')
    ( N9 K4 ?- \+ c3 M* f2 N6 M# l# {
  8. 7 @+ O* [+ R3 l, M\" ]/ u
  9. xlabel('样本编号')
    - V, a* u; p9 {% j
  10. 9 Q3 {4 V, Y( f: ?4 g7 T
  11. ylabel('辛烷值')! o% X& k+ v+ B1 ~0 }0 \

  12. $ @5 [! E' e3 Q+ Q% K- d
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};
    2 Q  D6 o6 w8 U& K; T' M* X
  14. 6 H. E5 Y' m  m6 J4 e
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。' W. i* ^4 K% a( r
6 ^2 \5 c! c- i
VeryCapture_20231122173210.jpg
, S$ c! J: [. A3 A/ o
; X( \8 i5 P' B+ |( A/ E

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-5-26 12:02 , Processed in 0.328833 second(s), 55 queries .

回顶部