【ELM分类】一种结合极限学习机和稀疏表示的混合图像分类方法附matlab代码

简介: 【ELM分类】一种结合极限学习机和稀疏表示的混合图像分类方法附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

通过将极限学习机 (ELM) 和稀疏表示 (SRC) 结合到一个统一的框架中,所提出的混合分类器不仅具有快速测试的优势(ELM 的优点),而且还显示出显着的分类精度(SRC 的优点)。我们对其进行 AR 人脸识别测试,其准确率达到 95%,优于 ELM(91%)和 SRC(93.5%)。

ELM 和 SRC 之间的桥梁是 ELM 错误分类指标和自适应蛋白质类别选择。

更详细的内容可以参考论文《罗敏,张凯. 一种结合极限学习机和稀疏表示的混合图像分类方法[J]. 人工智能工程应用, 2014, 27: 228-235.]。

请注意,它是上述论文的改进版本

⛄ 部分代码

clc;clear all;

load pca_datasets.mat;


num_nodes=1000;                       % hidden nodes number

C=1e0;

alpha=0.2;

kclass=length(unique(trainlabel))/2;  % for adaptive class domain selection


traindata  =  traindata./( repmat(sqrt(sum(traindata.*traindata)), [size(traindata,1),1]) );

testdata   =  testdata./(repmat(sqrt(sum(testdata.*testdata)), [size(testdata,1),1]) );


% [traindata,PS] = mapminmax(traindata,-1,1);%

% testdata = mapminmax('apply',testdata,PS);

% [traindata,PS] = mapstd(traindata);%

% testdata = mapstd('apply',testdata,PS);


rng(1);


tic;

[TrainingAccuracy,InputWeight, BiasofHiddenNeurons, OutputWeight,NumberofOutputNeurons,...

   label] = elm_train(traindata,trainlabel,num_nodes,C);

trainingtime=toc;




ID      = [];

IDe     = [];

lamda   = 1e-3;

tol     = 1e-2;

tic;

f = 0;



for i = 1 : size(testdata,2)

   

   [id, Tdiff, T] = elm_predict(testdata(:,i), InputWeight, BiasofHiddenNeurons, OutputWeight);

   

   IDe = [IDe, id];

   

   if Tdiff > alpha

       

       ID      =   [ID, id];

       

       if id ~= testlabel(i)

           

           fprintf('Wrong classification for %1.0f th testing sample by ELM criterion (|T_first - T_second| = %1.2f)   \n ', i, Tdiff);

           

       end

       

   else

       f = f + 1;

       

       [sim, slabel]=sort(T, 'descend');

       

       newtrainlabel = trainlabel(ismember(trainlabel,slabel(1:kclass)));

       

       newtraindata = traindata(:,ismember(trainlabel,slabel(1:kclass)));

       

       y = testdata(:,i);

       

       s = l1_ls(newtraindata, y, lamda, tol, 1);

       %  s=l1_ls_nonneg(newtraindata,y,5e-2,1e-7,1);

       

       newlabel = unique(newtrainlabel);

       

       if ~ismember(testlabel(i), newlabel)

           

           fprintf('Wrong classification for %1.0f th testing sample by ELM criterion (|Adaptive class domain|) \n ', i);

           

       end

       

       for indClass  =  1 : length(newlabel)

           coef_c    =  s(newtrainlabel==newlabel(indClass));

           Dc        =  newtraindata(:,newtrainlabel==newlabel(indClass));

           gap(indClass) = norm(y-Dc*coef_c)^2;

           

       end

       

       wgap3  = gap ;

       index3 = find(wgap3==min(wgap3));

       id3    = index3(1);

       id     = newlabel(id3);

       

       fprintf('%1.0f / %1.0f  %1.0f   %1.3f    %1.0f    %1.2f    %1.0f \n', i, size(testdata,2), f, sum(s), find(slabel==testlabel(i)), Tdiff, id==testlabel(i));

       

       ID      =   [ID, id];

       

       

   end

   

end

testingtime=toc;


Rec_ELM        =   sum(IDe==testlabel)/length(testlabel);

Rec_ELMSRC         =   sum(ID==testlabel)/length(testlabel); % recognition rate



disp(['ELM     recogniton rate is    ' num2str(Rec_ELM)]);


disp(['ELMSRC  recogniton rate is    ' num2str(Rec_ELMSRC)]);

figure

plot(testlabel,'bs-');hold on

plot(IDe,'ro-');hold on

plot(ID,'g*-');hold on

legend('真实值','ELM','ELMSRC')

xlabel('样本')

ylabel('类别')

⛄ 运行结果

⛄ 参考文献

《罗敏,张凯. 一种结合极限学习机和稀疏表示的混合图像分类方法[J]. 人工智能工程应用, 2014, 27: 228-235.]。

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
8天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
8天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
87 14
|
8天前
|
机器学习/深度学习 边缘计算 运维
【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)
【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)
76 10
|
8天前
|
机器学习/深度学习 算法
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
|
8天前
|
机器学习/深度学习 传感器 算法
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)
|
8天前
|
存储 算法 安全
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
|
8天前
|
传感器 机器学习/深度学习 编解码
【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)
【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)
|
8天前
|
算法 调度 决策智能
【复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略(Matlab代码实现)
【复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略(Matlab代码实现)
|
8天前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
|
8天前
|
算法 数据可视化 异构计算
【车辆路径问题VRPTW】基于北极海鹦优化(APO)算法求解带时间窗的车辆路径问题VRPTW研究(Matlab代码实现)
【车辆路径问题VRPTW】基于北极海鹦优化(APO)算法求解带时间窗的车辆路径问题VRPTW研究(Matlab代码实现)

热门文章

最新文章