|
a |
|
b/Ensemble Learning/Bagging/app1.m |
|
|
1 |
close all; clear;clc; |
|
|
2 |
|
|
|
3 |
load dataDWT.mat; |
|
|
4 |
%load dataAR.mat; |
|
|
5 |
%load dataCSP.mat; |
|
|
6 |
%load dataPSD.mat; |
|
|
7 |
Y(Y==2) = -1; |
|
|
8 |
|
|
|
9 |
|
|
|
10 |
y=Y; |
|
|
11 |
min_parent = 20; |
|
|
12 |
num_iterations=30; |
|
|
13 |
base_algorithm= 'classification_tree'; |
|
|
14 |
|
|
|
15 |
no_objects = length(y); |
|
|
16 |
fifth = floor(no_objects / 5); |
|
|
17 |
error_train = zeros([num_iterations 1]); |
|
|
18 |
error_test = zeros([num_iterations 1]); |
|
|
19 |
|
|
|
20 |
for fold = 1 : 5 |
|
|
21 |
mask_test = zeros([1 no_objects]); |
|
|
22 |
mask_test((fold - 1) * fifth + 1 : fifth * fold) = 1; |
|
|
23 |
mask_test = logical(mask_test); |
|
|
24 |
train_set = X(~mask_test,:); |
|
|
25 |
train_ans = y(~mask_test); |
|
|
26 |
test_set = X(mask_test,:); |
|
|
27 |
test_ans = y(mask_test); |
|
|
28 |
|
|
|
29 |
|
|
|
30 |
model = bagging_train(train_set, train_ans, num_iterations, base_algorithm, ... |
|
|
31 |
'min_parent', min_parent); |
|
|
32 |
|
|
|
33 |
[~, error_train_loop] = bagging_predict(model, train_set, train_ans); |
|
|
34 |
[~, error_test_loop] = bagging_predict(model, test_set, test_ans); |
|
|
35 |
error_train = error_train + error_train_loop; |
|
|
36 |
error_test = error_test + error_test_loop; |
|
|
37 |
end |
|
|
38 |
error_train = error_train / 5; |
|
|
39 |
error_test = error_test / 5; |
|
|
40 |
|
|
|
41 |
hold on; |
|
|
42 |
xlabel('Number of iterations'); |
|
|
43 |
ylabel('Error'); |
|
|
44 |
title('Bagging '); |
|
|
45 |
plot(1 : num_iterations, error_train, 'linewidth', 2); |
|
|
46 |
|
|
|
47 |
|