您的位置:首页 > 编程语言

对“视觉机器学习20讲配套仿真代码”的研究心得---Adaboost(四)

2016-05-02 14:04 381 查看
Initialize.m

function this = Initialize(this, Data, Labels)

if( size(Labels,1) ~= 1 || length(size(Labels)) ~= 2)

error('Labels should be a (1,N) matrix.');

end

if( size(Labels,2) ~= size(Data,2))

error('Data should be (M,N) matrix and Labels (1,N)');

end

for i = 1 : length(Data)

fold_i = floor(rand * (this.folds - eps) + 1);

if( i > this.folds )

this.CrossDataSets{fold_i} = {cat(2, Data(:, i), this.CrossDataSets{fold_i}{1,1})};

this.CrossLabelsSets{fold_i} = {cat(2, Labels(:, i), this.CrossLabelsSets{fold_i}{1,1})};

else

this.CrossDataSets{i} = {cat(2, Data(:, i), this.CrossDataSets{i})};

this.CrossLabelsSets{i} = {cat(2, Labels(:, i), this.CrossLabelsSets{i})};

end

end

GetFold.m

function [Data, Labels] = GetFold(this, N)

Data = [];

Labels = [];

if(N > this.folds)

error('N > total folds');

end

Data = cat(2, Data, this.CrossDataSets{N}{1,1});

Labels = cat(2, Labels, this.CrossLabelsSets{N}{1,1});

crossvalidation.m

function this = crossvalidation(folds)

if( folds == 1)

error('folds should be >= 2');

end

this.folds = folds;

this.CrossDataSets = cell(folds, 1);

this.CrossLabelsSets = cell(folds, 1);

this=class(this, 'crossvalidation') ;

CatFold.m

function [Data, Labels] = CatFold(this, Data, Labels, N)

if(N > this.folds)

error('N > total folds');

end

Data = cat(2, Data, this.CrossDataSets{N}{1,1});

Labels = cat(2, Labels, this.CrossLabelsSets{N}{1,1});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: