【ELM分类】基于SPA特征极限学习机实现建筑材料光谱分类附matlab代码

该博客介绍了使用极限学习机(ELM)进行光谱识别的方法,通过MATLAB代码展示了从数据预处理到模型训练、测试的过程。作者利用SPA筛选变量,并在红砖、渣土和混凝土的光谱数据上实现了高识别率,最后评估了模型的精度、精准率、召回率和F1分数。
摘要由CSDN通过智能技术生成

​1 简介

近年来,随着多媒体技术、数字化等技术的快速发展,机器学习领域得到了迅速的发展。极限学习机(ELM)作为一个有竞争力的机器学习算法,以其简洁的理论和易于实施的特点吸引了越来越多学者的关注。在分类和回归等问题中,极限学习机得到了广泛的应用,并表现出了良好的效果。

2 部分代码

%% 基于SPA+ELMclcclear allclose all%% 读取数据% 红砖data1=load('红砖.txt');data1=data1';% % 石灰% data2=load('石灰.txt');% data2=data2';% % 水泥% data3=load('水泥.txt');% data3=data3';% % 水泥砖% data4=load('水泥砖.txt');% data4=data4';% 渣土data5=load('渣土.txt');data5=data5';% 碎石混凝土data6=load('混凝土.txt');data6=data6';%% 波长wavelength=data1(1,:);%% 绘制红砖光谱图像figurefor i=2:size(data1,1)plot(wavelength,data1(i,:))hold onendxlabel('波长(cm^-1)')ylabel('吸光度')title('红砖光谱特征')axis tightbox off % %% 绘制石灰光谱图像% figure% for i=2:size(data2,1)% plot(wavelength,data2(i,:))% hold on% end% xlabel('波长(cm^-1)')% ylabel('吸光度')% title('石灰光谱特征')% axis tight% box off % %% 绘制水泥光谱图像% figure% for i=2:size(data3,1)% plot(wavelength,data3(i,:))% hold on% end% xlabel('波长(cm^-1)')% ylabel('吸光度')% title('水泥光谱特征')% axis tight% box off % %% 绘制水泥砖光谱图像% figure% for i=2:size(data4,1)% plot(wavelength,data4(i,:))% hold on% end% xlabel('波长(cm^-1)')% ylabel('吸光度')% title('水泥砖光谱特征')% axis tight% box off %% 绘制渣土光谱图像figurefor i=2:size(data5,1)plot(wavelength,data5(i,:))hold onendxlabel('波长(cm^-1)')ylabel('吸光度')title('渣土光谱特征')axis tightbox off %% 绘制混凝土光谱图像figurefor i=2:size(data6,1)plot(wavelength,data6(i,:))hold onendxlabel('波长(cm^-1)')ylabel('吸光度')title('碎石混凝土光谱特征')axis tightbox off %% 数据data=[data1(2:end,:);data5(2:end,:);data6(2:end,:)];%% 标签Label=[ones(size(data1(2:end,:),1),1);2*ones(size(data5(2:end,:),1),1);3*ones(size(data6(2:end,:),1),1)];%% 读取SPA筛选出的变量load var_sel1%% 划分训练集和测试集nn=randperm(size(data,1));ratio=0.7;tr=floor(ratio*size(data,1));% %% 训练集train_x=data(nn(1:tr),:)';train_y=Label(nn(1:tr))';% %% 测试集test_x=data(nn(tr+1:end),:)';test_y=Label(nn(tr+1:end))';%% 数据预处理归一化% 训练集归一化[inputn,inputps] = mapminmax(train_x,0,1);% [outputn,outputps] = mapminmax(train_y,0,1);% 测试集归一化input1 = mapminmax('apply',test_x,inputps);% output1 = mapminmax('apply',test_y,outputps);plot(trainY_out,'b*','linewidth',1)hold onplot(train_y,'ro','linewidth',1)xlabel('训练集')ylabel('标签(Label)')legend('预测标签','实际标签')methods = {'红砖','渣土','混凝土'};set(gca,'YGrid', 'on','YTickLabel',methods); set(gca,'ytick',[1,2,3])title(['SPA+ELM识别准确率:' num2str(accTrain*100) '%'],'fontsize',13)%title(图形名称)axis tight%% ELM测试testY_out= elmpredict(input1,IW1,B1,LW1,TF,TYPE);% T_sim = mapminmax('reverse',Tn_sim,outputps);% 计算准确率accTest = sum(test_y==testY_out)/length(testY_out);figureplot(testY_out,'b*','linewidth',1)hold onplot(test_y,'ro','linewidth',1)xlabel('测试集')ylabel('标签(Label)')legend('预测标签','实际标签')methods = {'红砖','渣土','混凝土'};set(gca,'YGrid', 'on','YTickLabel',methods); set(gca,'ytick',[1,2,3])title(['SPA+ELM识别准确率:' num2str(accTest*100) '%'],'fontsize',13)%title(图形名称)axis tight%% 评价指标[Accuracy,Precision,Recall,F_score]=Metrix(test_y,testY_out);%% 显示disp(['准确率Accuracy:',num2str(Accuracy) '%'])disp(['精准率Precision:',num2str(Precision) '%'])disp(['召回率Recall:',num2str(Recall) '%'])disp(['F_score:',num2str(F_score) '%'])

3 仿真结果

4 参考文献

[1]李丽娜. 基于极限学习机的分类问题研究[D]. 辽宁师范大学, 2017.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值