资源简介
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_2011b
- 计算信号盒维数的MATLAB代码
- MATLAB实现V-BLAST系统及其检测算法
- 带高斯白噪声的Kalman滤波Matlab代码带
- 一种基于turbo码的matlab仿真
- matlab中滑动窗口实现
- MATLAB实验报告
- Hill密码matlab实现源码
- 傅里叶梅林FourierMellin实现图像配准
- matlab knn算法 iris
- 非线性方程组求解matlab程序
- 用matlab演示行波的程序
- AdaBoost在matlab下的简单实现
- 基于MATLAB的行人检测代码
- 阵列信号处理的理论和应用 MATLAB 程序
- 分步傅里叶法Matlab代码共享代码
- matlab基于knn算法的adaboost实现
- apriori 频繁项集与关联规则 算法的m
- 基于Matlab的H_inf鲁棒控制器的设计
- matlab人眼识别代码
- ATM matlab 程序
- LU分解法的matlab实现
- 遗传算法VRP的matlab程序
-
HEV matlab/simuli
nk仿真模型 - kappa系数的MATLAB程序
- 扩展有限元源码
- Matlab基于窗函数的滤波器设计
- 阻尼牛顿法求函数极小值
- 基于遗传算法的排课问题的matlab实现
- 麻省理工matlab公开课课后答案
评论
共有 条评论