IRootLab
An Open-Source MATLAB toolbox for vibrational biospectroscopy
demo_eclass_incremental_learning.m
Go to the documentation of this file.
1 %> @brief Increase of classification rate as eClass is incrementally trained
2 %> @file
3 %> @ingroup demo
4 %>
5 %> This example shows how an incremental classifier can vary its performance depending on the order the training data is fed into the classifier.
6 %>
7 %> @image html demo_reptt_incr.png
8 
9 ds01 = load_data_uci_wine();
10 
11 % Random 90%-10% split
13 o.proportion = 0.9;
14 blmisc_split_proportion01 = o;
15 pieces = blmisc_split_proportion01.use(ds01);
16 
17 
18 % eClass0 Fuzzy classifier
19 o = frbm();
20 o = o.setbatch({'scale', 0.8, ...
21 'epsilon', exp(-1), ...
22 'flag_consider_Pmin', 1, ...
23 'flag_perclass', 1, ...
24 'flag_clone_rule_radii', 1, ...
25 'flag_iospace', 1, ...
26 's_f_get_firing', 'frbm_firing_exp_default', ...
27 's_f_update_rules', 'frbm_update_rules_kg1', ...
28 'flag_rls_global', 0, ...
29 'rho', 0.5, ...
30 'ts_order', 0, ...
31 'flag_wta', 0, ...
32 'flag_class2mo', 1});
33 frbm01 = o;
34 frbm01.flag_rtrecord = 1;
35 frbm01.record_every = 3;
36 frbm01.title = 'eClass0 1 rule per class';
37 
38 
39 % eClass1 fuzzy classifier
40 o = frbm();
41 o = o.setbatch({'scale', 0.8, ...
42 'epsilon', exp(-1), ...
43 'flag_consider_Pmin', 1, ...
44 'flag_perclass', 0, ...
45 'flag_clone_rule_radii', 1, ...
46 'flag_iospace', 1, ...
47 's_f_get_firing', 'frbm_firing_exp_default', ...
48 's_f_update_rules', 'frbm_update_rules_kg1', ...
49 'flag_rls_global', 0, ...
50 'rho', 0.5, ...
51 'ts_order', 1, ...
52 'flag_wta', 0, ...
53 'flag_class2mo', 1});
54 frbm02 = o;
55 frbm02.flag_rtrecord = 1;
56 frbm02.record_every = 3;
57 frbm02.title = 'eClass1 1 rule only';
58 
59 
60 % SGS that will give the dataset permutations of the 90% used for training
61 o = sgs_randsub();
62 o = o.setbatch({'flag_group', 0, ...
63 'flag_perclass', 0, ...
64 'randomseed', 4321, ...
65 'type', 'simple', ...
66 'bites', 1, ...
67 'no_reps', 10});
68 sgs01 = o;
69 
70 o = estlog_classxclass();
71 o.estlabels = ds01.classlabels;
72 o.testlabels = ds01.classlabels;
73 estlog_classxclass01 = o;
74 
75 o = decider();
76 o = o.setbatch({'decisionthreshold', 0});
77 decider01 = o;
78 
79 oi = reptt_incr();
80 % oi.block_mold = {frbm01, frbm02};
81 oi.block_mold = {frbm02};
82 oi.log_mold = {estlog_classxclass01};
83 oi.postpr_est = decider01;
84 oi.sgs = sgs01;
85 oi.flag_parallel = 1; % <------------------------Note that it will try to use the MATLAB Parallel Computing Toolbox
86 
87 irdata_incr01 = oi.use(pieces);
88 
89 
90 %%
91 
92 fig_assert();
93 global COLORS;
94 C1 = COLORS;
95 enlighten_colors(1.5);
96 
97 o = vis_alldata();
98 vis_alldata01 = o;
99 
100 figure;
101 vis_alldata01.use(irdata_incr01);
102 hold on;
103 
104 COLORS = C1;
105 o = vis_means();
106 vis_means01 = o;
107 
108 vis_means01.use(irdata_incr01);
109 
110 ylim([min(irdata_incr01.X(:))*0.975, max(irdata_incr01.X(:))*1.025]);
111 make_box();
112 legend off;
113 title('Individual runs and average curve');
114 maximize_window([], [], .8);
115 save_as_png([], 'irr_eclass_incremental');
function make_box()
function maximize_window(in h, in aspectratio, in normalizedsize)
Splits dataset in two according to proportion specified.
Visualization - All curves in dataset.
Definition: vis_alldata.m:2
Incremental learning curve - to test incremental classifiers.
Definition: reptt_incr.m:20
function load_data_uci_wine()
Block that resolves estimato posterior probabilities into classes.
Definition: decider.m:10
function save_as_png(in h, in fn, in dpi)
Records (test class)x([rejected, estimation class]) hits.
Random Sub-sampling.
Definition: sgs_randsub.m:5
Visualization - Class means.
Definition: vis_means.m:2
function enlighten_colors(in factor)
Analysis Session (AS) base class.
Definition: as.m:6
function fig_assert()