资源简介
Boosting算法的MATLAB代码实现

代码片段和文件信息
classdef Adaboost < handle
%Adaboost
properties
k_max;
k_next;
k_cur;
part_trains;
base_learner;
learners;
learner_weights;
early_terminate;
d_weights;
d_size;
end
methods
function a = Adaboost(k_max base_learner early_terminate)
%k-max: Size of the model integer >= 1
%base_learner: Model constructor function e.g. @()CART()
%The model must be an object with methods a.train(inputs outputs)
%and outputs = a.test(inputs).
%early_terminate: Optional detemines whether to terminate if base
%learner error is greater than 0.5 (default is to continue and the
%base learner receives a negative weight).
if (nargin < 3)
early_terminate = false;
end
a.k_max = k_max;
a.part_trains = a.k_max;
a.k_next = a.k_max;
a.learners = cell(a.k_max 1);
a.learner_weights = zeros(a.k_max 1);
a.base_learner = base_learner;
a.early_terminate = early_terminate;
a.k_cur = 0;
end
function part_train(a inputs outputs k_next)
a.k_next = k_next;
a.train(inputs outputs);
a.k_next = a.k_max;
end
function train(a inputs outputs)
if (a.k_cur == 0)
a.d_size = size(inputs 1);
a.d_weights = ones(a.d_size 1) ./ a.d_size;
end
while (a.k_cur < a.k_next)
a.k_cur = a.k_cur + 1;
%Create an NxN square of cumulatively summed weights (i.e. N
%rows containing the weight cumsum). Create an NxN square of random
%numbers (N columns containing the same N random numbers). Compare
%them and sum the rows. The number of weights that are less than
%each random number indicates the index sampled by that row.
indices = sum(repmat(cumsum(a.d_weights)‘ a.d_size 1) <= ...
repmat(rand(a.d_size 1) 1 a.d_size) 2) + 1;
a.learners{a.k_cur} = a.base_learner();
a.learners{a.k_cur}.train(inputs(indices :) outputs(indices));
predictions = a.learners{a.k_cur}.test(inputs) == outputs;
weighted_error = sum(~predictions .* a.d_weights);
if (a.early_terminate && weighted_error > 0.5)
a.k_max = a.k_cur - 1;
a.k_cur = a.k_cur - 1;
a.learner_weights = a.learner_weights(1:a.k_max);
break;
end
weighted_error = min(max(weighted_error 0.01) 0.99);
a.learner_weights(a.k_cur) = 0.5 * log((1 - weighted_error) / weighted_error);
a.d_weights = feval(@(x)x./sum(x) a.d_weights .* ...
exp(-a.learner_weights(a.k_cur) * ssign(predictions)));
end
end
function outputs = test(a inputs)
outputs = ssign(a.margins(inputs));
end
function margins = margins(a inputs)
margins = cell2mat(arrayfun(@(x)a.learners{x}.test(i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3166 2014-01-15 22:55 boosting_demo\boosting_demo\Adaboost.m
文件 18577 2014-01-15 22:55 boosting_demo\boosting_demo\boosting_demo.m
文件 784 2014-01-15 22:55 boosting_demo\boosting_demo\CART.m
文件 3095 2014-01-15 22:55 boosting_demo\boosting_demo\DataGen.m
文件 5002 2014-01-15 22:55 boosting_demo\boosting_demo\LinearRegression.m
文件 1189 2014-01-15 22:55 boosting_demo\boosting_demo\NeuralNetwork.m
文件 2619 2014-01-15 22:55 boosting_demo\boosting_demo\OnlineNaiveBayes.m
文件 323 2014-01-15 22:55 boosting_demo\boosting_demo\ssign.m
文件 1395 2014-01-15 22:55 boosting_demo\boosting_demo\Stump.m
文件 692 2014-01-15 22:55 boosting_demo\boosting_demo\SVM.m
文件 1340 2014-01-15 22:55 boosting_demo\license.txt
目录 0 2014-01-15 22:55 boosting_demo\boosting_demo
目录 0 2014-01-15 22:55 boosting_demo
----------- --------- ---------- ----- ----
38182 13
- 上一篇:matlab dtmf
- 下一篇:函数绘图软件
相关资源
- 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
评论
共有 条评论