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]