【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电子书和数学建模资料


相关文章
|
10月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
1121 0
|
10月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
422 8
|
10月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
409 8
|
10月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
803 0
|
10月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
308 0
|
10月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
305 0
|
10月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
365 8
|
10月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
475 8
|
10月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
819 12
|
10月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
314 9

热门文章

最新文章