资源简介
adaboost算法是一个由多个弱分类器生成一个强分类器的算法,可以提高分类的正确率,这里利用adaboost算法的原理,结合matlab做了一个简单的实例
里面h1-h8为八个弱分类器,adaboost为训练的主函数,test调用了训练函数,对一个样本进行测试,calerr计算每次循环后的错误频率

代码片段和文件信息
function [at choose T]=adaboost()
%定义样本
p=[10;-10;01;0-1];
%样本数目
numofs=4;
%定义正确分类结果
y=[11-1-1];
%分类器数目
numofc=8;
%预设的循环次数
cycle=5;
%实际循环次数定义为T
%定义循环过程中选择的函数下标和比重
at=zeros(1cycle);
choose=zeros(1cycle);
%每个样本在每个分类器下的label
label=zeros(numofsnumofc);
%计算得到label数组的值
for i=1:numofs
for j=1:numofc
label(ij)=h(jp(i:));
end
end
%得到每个函数错误样本的数组
wrong=zeros(numofcnumofs);
for i=1:numofc
for j=1:numofs
wrong(ij)=(label(ji)~=y(j));
end
end
%初始化每个样本的权重
weight=ones(1numofs)/numofs;
%循环开始
%记录每次循环中每个分类器对应的错误
err_freq=ones(1cycle);
for k=1:cycle
error=zeros(1numofc);
for m=1:numofc
error(m)=sum(weight(wrong(m:)==1));
end
[err index]=min(error);
%计算当前选择的错误最小的分类器对应的权值
choose(k)=index;
at(k)=log((1-err)/err)/2;
%更新权值
weight(wrong(index:)==1)=weight(wrong(index:)==1)*exp(0.5)*(1-err)/err;
weight(wrong(index:)==0)=weight(wrong(index:)==0)*exp(-0.5)*(1-err)/err;
%标准化
weight=weight/sum(weight);
%计算当前分类器下的错误频率如果训练错误概率已经为0,则退出循环
err_freq(k)=calerr(numofsylabelatchoosek);
if(err_freq(k)==0)
break;
end
end
T=k;
at=at(1:T);
choose=choose(1:T);
plot(1:Terr_freq(1:T)‘b*‘);
title(‘error vs round‘);
xlabel(‘round‘);
ylabel(‘training error‘);
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1534 2013-07-27 11:55 ada2\adaboost.asv
文件 1511 2013-07-27 13:54 ada2\adaboost.m
文件 471 2013-07-27 11:59 ada2\calerr.m
文件 109 2013-07-27 13:51 ada2\classier.asv
文件 187 2013-07-27 13:53 ada2\classier.m
文件 207 2013-07-27 11:10 ada2\h.asv
文件 479 2013-07-27 11:11 ada2\h.m
文件 99 2013-07-27 11:56 ada2\h1.m
文件 99 2013-07-27 11:56 ada2\h2.m
文件 98 2013-07-27 11:56 ada2\h3.m
文件 98 2013-07-27 11:56 ada2\h4.m
文件 99 2013-07-27 11:56 ada2\h5.m
文件 99 2013-07-27 11:56 ada2\h6.m
文件 98 2013-07-27 11:57 ada2\h7.m
文件 98 2013-07-27 11:57 ada2\h8.m
文件 110 2013-07-27 13:55 ada2\test.m
目录 0 2013-07-27 13:52 ada2
----------- --------- ---------- ----- ----
5396 17
- 上一篇:WAVELET零水印算法
- 下一篇:Matlab_2011b
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论