QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-11-22 17:49 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:
2 b! I# o3 C8 c9 @7 g  n, @! N8 B" w! S1 `. O. s3 {' \+ k
1.数据加载和划分:
, O8 `- L5 ~, l7 {( z% U( A3 c4 _- M
2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。
9 z3 j9 D9 D0 R3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。
  1. load spectra_data.mat
    % D$ b5 v5 q7 x

  2.   R% c. d: F\" s. b3 X4 O6 Q
  3. temp = randperm(size(NIR,1));\" F& p) F4 P- D3 g& `

  4. 5 G; ~1 F\" q; ~7 x* [
  5. P_train = NIR(temp(1:50),:)';
    ; w  v+ y4 D- p2 y+ v  f

  6. % O. ^5 N9 |. Q6 B8 A9 v7 k
  7. T_train = octane(temp(1:50),:)';. Y\" c- |1 I% c% {

  8. 6 t5 V! P. f8 S7 G0 B6 T
  9. P_test = NIR(temp(51:end),:)';( X, w* p1 R, o. J

  10. % ~: E6 u9 W- V- w
  11. T_test = octane(temp(51:end),:)';
    * b+ l% {. z6 ?' N& |
  12. ; u- {3 e$ o\" i) @
  13. N = size(P_test,2);
复制代码
4.数据归一化:
6 i# ?+ r4 R  G+ {) T+ z6 X* P0 S  u# A
5.对训练集和测试集的输入和输出进行归一化。
  1. [Pn_train,inputps] = mapminmax(P_train);
    / U  g! R# g: n' g6 o5 q
  2. ! v  X' Y! i  b. m' Z
  3. Pn_test = mapminmax('apply',P_test,inputps);
    - g8 c' g+ a5 L1 w. r\" F

  4. 7 c3 O3 N* e, [1 H% X& ?
  5. [Tn_train,outputps] = mapminmax(T_train);7 _\" l. ^# ~* o9 [( ^& C

  6. % o% W: ~3 _/ q% y
  7. Tn_test = mapminmax('apply',T_test,outputps);
复制代码
6.ELM模型创建/训练:, K. Y( c/ y+ H

1 s$ p' \% m% j6 t4 V( e. C& B
6 L. J, ~& f7 `2 n1 }. a7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。
  1. [IW,B,LW,TF,TYPE] = elmtrain(Pn_train,Tn_train,30,'sig',0);
复制代码
8.ELM模型仿真测试:5 v9 e; ^7 G1 h4 |$ g
9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。
  1. tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);
    4 C' _8 `; `, `  f( ]\" R\" x+ K( x
  2. 4 N3 C& L* H( G  ?
  3. T_sim = mapminmax('reverse',tn_sim,outputps);
复制代码
10.结果评估:) H/ B; s& b0 ?% K/ `
11.将真实值和预测值组合成一个矩阵 result。& V/ Z5 f- c4 X2 s8 z1 ^$ ?  j: F# y
12.计算均方误差(MSE)和决定系数(R^2)。
  1. result = [T_test' T_sim'];
    0 S; Z, h3 n. Z; ]# N
  2. ; Z5 V/ s( ~) h7 V; W7 I+ x
  3. E = mse(T_sim - T_test);
    - {! d* _8 X\" X7 n& _

  4. ) h* a9 l* H* a6 D$ Y$ L
  5. N = length(T_test);, b' y# r! X- K  \8 ?

  6. , M) D  l5 A$ z
  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.结果可视化:
! I' E& Z( y" q14.绘制真实值和预测值的对比图。
' n# }+ o6 X) w: w* I' Q15.在图标题中显示均方误差(MSE)和决定系数(R^2)。
  1. figure(1)
    2 L2 B  D( D: o# ?9 P) U& q
  2. ; ~4 u  Z& K7 t3 U. q
  3. plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')
    4 w3 l1 f9 N, C! f- p
  4. 4 o' q/ N( T/ h6 Y2 H7 F+ O
  5. grid on
    4 y* [0 _+ X, O. \, B) C
  6. ) L4 i7 E. P$ [) s& }1 s# y\" u
  7. legend('真实值','预测值')
    ! ]! i, |# d. @

  8. & l' G1 q. m& n  N4 u! Y7 Q0 e
  9. xlabel('样本编号')7 g/ V\" [3 I! o1 p. }

  10. ) I0 F* |  j/ t7 n+ c' m
  11. ylabel('辛烷值')) o+ m5 x\" P# ?  g+ g0 {+ M  G

  12. 5 o) d- t9 D# m: W5 F5 h
  13. string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};9 K8 A3 r) h: a

  14. ! s1 @0 P. [  X# _3 N
  15. title(string)
复制代码
综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。
& u! q6 r) A3 B2 y9 s3 V* f- W2 p- _5 S3 t, E. a* y
VeryCapture_20231122173210.jpg 4 ~* O5 {5 n, `$ V
2 O: Q' f* N+ P- Q/ j

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-7-30 07:20 , Processed in 3.183477 second(s), 55 queries .

回顶部