QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-11-22 17:49 |只看该作者 |正序浏览
|招呼Ta 关注Ta
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:# z' g4 p) N& _

7 B& M8 r$ A7 U$ U9 i: z1.数据加载和划分:0 z" G$ t" F: k/ V( ]

) Z3 m9 U& k- r7 m% G2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。& [. v. `' B" z" Y8 J
3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat
    / k: L- h7 |) O5 i/ c  Z/ U

  2. 0 m2 K/ P# _7 J% l* F4 }  d
  3. temp = randperm(size(NIR,1));9 B0 j! j8 H' H9 X* S$ U' T
  4. 6 J0 @! [8 K6 Z# g
  5. P_train = NIR(temp(1:50),:)';* D9 G\" w# [; n. S* q6 j; d

  6. 6 K8 ^) Q) h5 J; a
  7. T_train = octane(temp(1:50),:)';7 `+ v% P' i7 h* x* o# f
  8. * C3 T; W% W' X+ d
  9. P_test = NIR(temp(51:end),:)';
    , f* t' e* i/ t6 W( k+ @* `( ?, M
  10. 2 @% s8 l1 g5 y9 u2 u1 M
  11. T_test = octane(temp(51:end),:)';
    4 E* ~, E9 S: o  P/ [$ a
  12. $ q. D4 U0 N* \' v* @0 t
  13. N = size(P_test,2);
复制代码
4.数据归一化:
. z3 {: A4 o* I7 J0 P; i) Z8 k2 {0 E$ p0 t4 V5 I1 ]! \
5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);7 d. R: d% [/ p4 n8 W5 E

  2. $ j% N. r( C  I% P. J1 R
  3. Pn_test = mapminmax('apply',P_test,inputps);  G. L\" |$ ]1 Y! f3 K/ O

  4. # C4 I/ e5 T% E2 f5 n
  5. [Tn_train,outputps] = mapminmax(T_train);5 ?- W: h# p( A) A

  6.   ]  b: N( n6 k1 Y* [; v
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:' m& e' s: s/ l1 b3 g
" s( K: W+ Z6 V4 n9 @1 B
! S6 F7 {3 P- u. y; X6 a
7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:( `, s/ K3 Q% z% L+ L& ^
9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);  M9 I: n  @& r& n8 m* Y% r

  2. # \: N- B5 k2 Z/ K- X
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:: F, _8 Q0 G$ [+ ]2 O- s
11.将真实值和预测值组合成一个矩阵 result。* o) C' @7 e2 X! a
12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];
    , j5 r1 O( f; S' R$ D( o

  2. ( X. s% q) k. z
  3. E = mse(T_sim - T_test);
    6 J. e6 z$ l* L0 h, ]- U

  4. / S7 |\" ]. M3 K! ~  @
  5. N = length(T_test);# G# f. ~% f  D/ t

  6. / H4 |7 U+ s/ q$ E9 @\" p* ]
  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 P0 q2 g3 J6 J) k- j; ~' z% L
14.绘制真实值和预测值的对比图。
" A! {- C3 q" O3 s  O( v15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)2 c! t* A\" R' u
  2.   P, L: b5 W1 M/ k2 c4 |9 @
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')* J( @! k5 D& r$ ~3 X

  4. % {) y7 W# y; P5 s2 g5 y6 ~
  5. grid on
    / {; ~$ H* A* W2 f

  6. 7 D0 N+ B* v4 _8 y) y7 I\" M
  7. legend('真实值','预测值')
    5 i# I% G6 o! m\" ~, t  b
  8. , E4 ~0 P# ]. L
  9. xlabel('样本编号')
    0 r4 P6 R) M8 w

  10. : p4 s+ _3 q4 ?# M
  11. ylabel('辛烷值'). s* T4 O0 u4 G4 `

  12. . M+ U* y) t6 ?& u
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};! Z3 C\" L% _* D4 |! `

  14. / k% S2 c, Y\" N5 Q$ n
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。
2 K, ?8 q7 O, V# U) P) U/ A7 L; l  g, y6 p6 A
VeryCapture_20231122173210.jpg
- r% s" L7 n9 z7 `5 t% D5 ^5 I
4 x! O- Z# b$ J+ U6 r, K

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-6-8 17:01 , Processed in 0.453942 second(s), 56 queries .

回顶部