2744557306 发表于 2023-11-22 17:49

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

这段MATLAB代码实现了使用极限学习机(Extreme Learning Machine,ELM)进行回归的过程。下面是代码的主要功能和步骤的解释:

1.数据加载和划分:

2.通过加载 spectra_data.mat 文件获取NIR(近红外光谱)和辛烷值数据。
3.随机将数据集分为训练集和测试集,其中训练集有50个样本,测试集有10个样本。load spectra_data.mat

temp = randperm(size(NIR,1));

P_train = NIR(temp(1:50),:)';

T_train = octane(temp(1:50),:)';

P_test = NIR(temp(51:end),:)';

T_test = octane(temp(51:end),:)';

N = size(P_test,2);4.数据归一化:

5.对训练集和测试集的输入和输出进行归一化。 = mapminmax(P_train);

Pn_test = mapminmax('apply',P_test,inputps);

= mapminmax(T_train);

Tn_test = mapminmax('apply',T_test,outputps);6.ELM模型创建/训练:


7.使用 elmtrain 函数创建并训练ELM模型。该模型有30个隐含层神经元,激活函数为sigmoid函数。 = elmtrain(Pn_train,Tn_train,30,'sig',0);8.ELM模型仿真测试:
9.使用 elmpredict 函数对测试集进行仿真测试,得到预测结果。tn_sim = elmpredict(Pn_test,IW,B,LW,TF,TYPE);

T_sim = mapminmax('reverse',tn_sim,outputps);10.结果评估:
11.将真实值和预测值组合成一个矩阵 result。
12.计算均方误差(MSE)和决定系数(R^2)。result = ;

E = mse(T_sim - T_test);

N = length(T_test);

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.结果可视化:
14.绘制真实值和预测值的对比图。
15.在图标题中显示均方误差(MSE)和决定系数(R^2)。figure(1)

plot(1:N,T_test,'r-*',1:N,T_sim,'b:o')

grid on

legend('真实值','预测值')

xlabel('样本编号')

ylabel('辛烷值')

string = {'测试集辛烷值含量预测结果对比(ELM)';['(mse = ' num2str(E) ' R^2 = ' num2str(R2) ')']};

title(string)综合而言,这段代码通过ELM模型对近红外光谱数据进行回归预测,并通过图表展示了预测结果的准确性。



页: [1]
查看完整版本: ELM的回归拟合——基于近红外光谱的汽油辛烷值预测鸢尾花种类识别