a b/gleason_classifier.m
1
function gleason_classifer
2
addpath /Volumes/Hydra/Analyses/SD_Recurrence/roi_tile_output/
3
4
%% Load and partition data
5
load feature_tbl.mat
6
load feature_tbl2.mat
7
%%
8
% train/test = unbalanced data
9
% train2 = balanaced
10
% train_hln/test_hln = train2 split into high, low, normal (semi-balanced lol)
11
% train_ng/test_ng = train2 split into normal vs all other grades
12
13
training = []; % training subject labels
14
testing = []; % testing subject labels
15
16
% Z-score first
17
train = [];
18
for i = 1:numel(training)
19
    trainingIdx = find(tbl.Subject == training(i));
20
    train = cat(1,train,tbl(trainingIdx,[1,2,7:end]));
21
end
22
train2 = train;
23
for i = 1:40
24
    train2{:,i+2} = zscore(train{:,i+2});
25
end
26
27
28
test = [];
29
for i = 1:numel(testing)
30
    testingIdx = find(tbl.Subject == testing(i));
31
    test = cat(1,test,tbl(testingIdx,[1,2,7:end]));
32
end
33
test2 = test;
34
for i = 1:24
35
    ave = mean(train{:,i+2});
36
    stdev = std(train{:,i+2},'omitnan');
37
    
38
    for j = 1:height(test2)
39
        test2{j,i+2} = (test2{j,i+2} - ave)/stdev;
40
    end
41
end
42
43
44
% Z-score first
45
trainingIdx = find(tbl.Category == "Training");
46
train = tbl(trainingIdx,[2,7:end-2]);
47
train2 = train;
48
for i = 1:40
49
    train2{:,i+1} = zscore(train{:,i+1});
50
end
51
52
testingIdx = find(tbl.Category == "Testing");
53
test = tbl(testingIdx,[2,7:end-2]);
54
55
test2 = test;
56
for i = 1:24
57
    ave = mean(train{:,i+1});
58
    stdev = std(train{:,i+1},'omitnan');
59
    
60
    for j = 1:height(test2)
61
        test2{j,i+1} = (test2{j,i+1} - ave)/stdev;
62
    end
63
end
64
65
% Z-score whole mounts used for demonstrations
66
load feature_tbl_2235.mat
67
load feature_tbl_2181.mat
68
load feature_tbl_1163.mat
69
70
for i = 1:24
71
    ave = mean(train{:,i+2});
72
    stdev = std(train{:,i+2},'omitnan');
73
    
74
    for j = 1:height(feature_tbl_2235)
75
        feature_tbl_2235{j,i+7} = (feature_tbl_2235{j,i+7} - ave)/stdev;
76
    end
77
end
78
79
for i = 1:24
80
    ave = mean(train{:,i+2});
81
    stdev = std(train{:,i+2},'omitnan');
82
    
83
    for j = 1:height(feature_tbl_2181)
84
        feature_tbl_2181{j,i+7} = (feature_tbl_2181{j,i+7} - ave)/stdev;
85
    end
86
end
87
88
for i = 1:24
89
    ave = mean(train{:,i+2});
90
    stdev = std(train{:,i+2},'omitnan');
91
    
92
    for j = 1:height(feature_tbl_1163)
93
        feature_tbl_1163{j,i+5} = (feature_tbl_1163{j,i+5} - ave)/stdev;
94
    end
95
end
96
97
%% H/L/N
98
train_hln = train2;
99
loc = find(train_hln.Anot_Class == 'Atrophy' | train_hln.Anot_Class == 'HGPIN' ...
100
    | train_hln.Anot_Class == 'Seminal_Vesicles' | train_hln.Anot_Class == 'Tissue');
101
train_hln.Anot_Class(loc) = 'Normal';
102
103
loc = find(train_hln.Anot_Class == 'G3');
104
train_hln.Anot_Class(loc) = 'Low';
105
106
loc = find(train_hln.Anot_Class == 'G4FG' | train_hln.Anot_Class == 'G4CG' | train_hln.Anot_Class == 'G5');
107
train_hln.Anot_Class(loc) = 'High';
108
%
109
test_hln = test2;
110
loc = find(test_hln.Anot_Class == 'Atrophy' | test_hln.Anot_Class == 'HGPIN' ...
111
    | test_hln.Anot_Class == 'Seminal_Vesicles' | test_hln.Anot_Class == 'Tissue');
112
test_hln.Anot_Class(loc) = 'Normal';
113
114
loc = find(test_hln.Anot_Class == 'G3');
115
test_hln.Anot_Class(loc) = 'Low';
116
117
loc = find(test_hln.Anot_Class == 'G4FG' | test_hln.Anot_Class == 'G4CG' | test_hln.Anot_Class == 'G5');
118
test_hln.Anot_Class(loc) = 'High';
119
%
120
loc = find(feature_tbl_2235.Anot_Class == 'Atrophy' | feature_tbl_2235.Anot_Class == 'HGPIN' ...
121
    | feature_tbl_2235.Anot_Class == 'Seminal_Vesicles' | feature_tbl_2235.Anot_Class == 'Tissue');
122
feature_tbl_2235.Anot_Class(loc) = 'Normal';
123
124
loc = find(feature_tbl_2235.Anot_Class == 'G3');
125
feature_tbl_2235.Anot_Class(loc) = 'Low';
126
127
loc = find(feature_tbl_2235.Anot_Class == 'G4FG' | feature_tbl_2235.Anot_Class == 'G4CG' | feature_tbl_2235.Anot_Class == 'G5');
128
feature_tbl_2235.Anot_Class(loc) = 'High';
129
%
130
loc = find(feature_tbl_2181.Anot_Class == 'Atrophy' | feature_tbl_2181.Anot_Class == 'HGPIN' ...
131
    | feature_tbl_2181.Anot_Class == 'Seminal_Vesicles' | feature_tbl_2181.Anot_Class == 'Tissue');
132
feature_tbl_2181.Anot_Class(loc) = 'Normal';
133
134
loc = find(feature_tbl_2181.Anot_Class == 'G3');
135
feature_tbl_2181.Anot_Class(loc) = 'Low';
136
137
loc = find(feature_tbl_2181.Anot_Class == 'G4FG' | feature_tbl_2181.Anot_Class == 'G4CG' | feature_tbl_2181.Anot_Class == 'G5');
138
feature_tbl_2181.Anot_Class(loc) = 'High';
139
%
140
loc = find(feature_tbl_1163.Anot_Class == 'Atrophy' | feature_tbl_1163.Anot_Class == 'HGPIN' ...
141
    | feature_tbl_1163.Anot_Class == 'Seminal_Vesicles' | feature_tbl_1163.Anot_Class == 'Tissue');
142
feature_tbl_1163.Anot_Class(loc) = 'Normal';
143
144
loc = find(feature_tbl_1163.Anot_Class == 'G3');
145
feature_tbl_1163.Anot_Class(loc) = 'Low';
146
147
loc = find(feature_tbl_1163.Anot_Class == 'G4FG' | feature_tbl_1163.Anot_Class == 'G4CG' | feature_tbl_1163.Anot_Class == 'G5');
148
feature_tbl_1163.Anot_Class(loc) = 'High';
149
150
mdl_hln_nb = fitcnb(train_hln(:,2:25),train_hln.Anot_Class,'OptimizeHyperparameters','all');
151
mdl_hln_knn = fitcknn(train_hln(:,2:25),train_hln.Anot_Class,'OptimizeHyperparameters','all');
152
mdl_hln_tree = fitctree(train_hln(:,2:25),train_hln.Anot_Class,'OptimizeHyperparameters','all');
153
mdl_hln_ecoc = fitcecoc(train_hln(:,2:25),train_hln.Anot_Class,'OptimizeHyperparameters','auto'); %
154
mdl_hln_ensemble = fitcensemble(train_hln(:,2:25),train_hln.Anot_Class,'OptimizeHyperparameters','all');
155
mdl_hln_net = fitcnet(train_hln(:,2:25),train_hln.Anot_Class,'OptimizeHyperparameters','all');
156
157
%% N/G 
158
train_ng = train2;
159
loc = find(train_ng.Anot_Class == 'Atrophy' | train_ng.Anot_Class == 'HGPIN' ...
160
    | train_ng.Anot_Class == 'Seminal_Vesicles' | train_ng.Anot_Class == 'Tissue');
161
train_ng.Anot_Class(loc) = 'Normal';
162
%
163
test_ng = test2;
164
loc = find(test_ng.Anot_Class == 'Atrophy' | test_ng.Anot_Class == 'HGPIN' ...
165
    | test_ng.Anot_Class == 'Seminal_Vesicles' | test_ng.Anot_Class == 'Tissue');
166
test_ng.Anot_Class(loc) = 'Normal';
167
%
168
loc = find(feature_tbl_2235.Anot_Class == 'Atrophy' | feature_tbl_2235.Anot_Class == 'HGPIN' ...
169
    | feature_tbl_2235.Anot_Class == 'Seminal_Vesicles' | feature_tbl_2235.Anot_Class == 'Tissue');
170
feature_tbl_2235.Anot_Class(loc) = 'Normal';
171
%
172
loc = find(feature_tbl_2181.Anot_Class == 'Atrophy' | feature_tbl_2181.Anot_Class == 'HGPIN' ...
173
    | feature_tbl_2181.Anot_Class == 'Seminal_Vesicles' | feature_tbl_2181.Anot_Class == 'Tissue');
174
feature_tbl_2181.Anot_Class(loc) = 'Normal';
175
%
176
loc = find(feature_tbl_1163.Anot_Class == 'Atrophy' | feature_tbl_1163.Anot_Class == 'HGPIN' ...
177
    | feature_tbl_1163.Anot_Class == 'Seminal_Vesicles' | feature_tbl_1163.Anot_Class == 'Tissue');
178
feature_tbl_1163.Anot_Class(loc) = 'Normal';
179
180
mdl_ng_nb = fitcnb(train_ng(:,2:25),train_ng.Anot_Class,'OptimizeHyperparameters','all');
181
mdl_ng_knn = fitcknn(train_ng(:,2:25),train_ng.Anot_Class,'OptimizeHyperparameters','all');
182
mdl_ng_tree = fitctree(train_ng(:,2:25),train_ng.Anot_Class,'OptimizeHyperparameters','all');
183
mdl_ng_ecoc = fitcecoc(train_ng(:,2:25),train_ng.Anot_Class,'OptimizeHyperparameters','auto');
184
mdl_ng_ensemble = fitcensemble(train_ng(:,2:25),train_ng.Anot_Class,'OptimizeHyperparameters','all');
185
mdl_ng_net = fitcnet(train_ng(:,2:25),train_ng.Anot_Class,'OptimizeHyperparameters','all');
186
187
188
189
%% Cancer v Noncancer
190
train_nc = train2;
191
loc = find(train_nc.Anot_Class == 'Atrophy' | train_nc.Anot_Class == 'HGPIN' ...
192
    | train_nc.Anot_Class == 'Seminal_Vesicles' | train_nc.Anot_Class == 'Tissue');
193
train_nc.Anot_Class(loc) = 'Normal';
194
195
loc = find(train2.Anot_Class == 'G3' | train2.Anot_Class == 'G4FG' ...
196
    | train2.Anot_Class == 'G4CG' | train2.Anot_Class == 'G5');
197
train_nc.Anot_Class(loc) = 'Cancer';
198
%
199
test_nc = test2;
200
loc = find(test_nc.Anot_Class == 'Atrophy' | test_nc.Anot_Class == 'HGPIN' ...
201
    | test_nc.Anot_Class == 'Seminal_Vesicles' | test_nc.Anot_Class == 'Tissue');
202
test_nc.Anot_Class(loc) = 'Normal';
203
204
loc = find(test2.Anot_Class == 'G3' | test2.Anot_Class == 'G4FG' ...
205
    | test2.Anot_Class == 'G4CG' | test2.Anot_Class == 'G5');
206
test_nc.Anot_Class(loc) = 'Cancer';
207
%
208
loc = find(feature_tbl_2235.Anot_Class == 'Atrophy' | feature_tbl_2235.Anot_Class == 'HGPIN' ...
209
    | feature_tbl_2235.Anot_Class == 'Seminal_Vesicles' | feature_tbl_2235.Anot_Class == 'Tissue');
210
feature_tbl_2235.Anot_Class(loc) = 'Normal';
211
212
loc = find(feature_tbl_2235.Anot_Class == 'G3' | feature_tbl_2235.Anot_Class == 'G4FG' ...
213
    | feature_tbl_2235.Anot_Class == 'G4CG' | feature_tbl_2235.Anot_Class == 'G5');
214
feature_tbl_2235.Anot_Class(loc) = 'Cancer';
215
%
216
loc = find(feature_tbl_2181.Anot_Class == 'Atrophy' | feature_tbl_2181.Anot_Class == 'HGPIN' ...
217
    | feature_tbl_2181.Anot_Class == 'Seminal_Vesicles' | feature_tbl_2181.Anot_Class == 'Tissue');
218
feature_tbl_2181.Anot_Class(loc) = 'Normal';
219
220
loc = find(feature_tbl_2181.Anot_Class == 'G3' | feature_tbl_2181.Anot_Class == 'G4FG' ...
221
    | feature_tbl_2181.Anot_Class == 'G4CG' | feature_tbl_2181.Anot_Class == 'G5');
222
feature_tbl_2181.Anot_Class(loc) = 'Cancer';
223
%
224
loc = find(feature_tbl_1163.Anot_Class == 'Atrophy' | feature_tbl_1163.Anot_Class == 'HGPIN' ...
225
    | feature_tbl_1163.Anot_Class == 'Seminal_Vesicles' | feature_tbl_1163.Anot_Class == 'Tissue');
226
feature_tbl_1163.Anot_Class(loc) = 'Normal';
227
228
loc = find(feature_tbl_1163.Anot_Class == 'G3' | feature_tbl_1163.Anot_Class == 'G4FG' ...
229
    | feature_tbl_1163.Anot_Class == 'G4CG' | feature_tbl_1163.Anot_Class == 'G5');
230
feature_tbl_1163.Anot_Class(loc) = 'Cancer';
231
232
mdl_nc_nb = fitcnb(train_nc(:,2:25),train_nc.Anot_Class,'OptimizeHyperparameters','all');
233
mdl_nc_knn = fitcknn(train_nc(:,2:25),train_nc.Anot_Class,'OptimizeHyperparameters','all');
234
mdl_nc_tree = fitctree(train_nc(:,2:25),train_nc.Anot_Class,'OptimizeHyperparameters','all');
235
mdl_nc_ecoc = fitcecoc(train_nc(:,2:25),train_nc.Anot_Class,'OptimizeHyperparameters','auto');
236
mdl_nc_ensemble = fitcensemble(train_nc(:,2:25),train_nc.Anot_Class,'OptimizeHyperparameters','all');
237
mdl_nc_net = fitcnet(train_nc(:,2:25),train_nc.Anot_Class,'OptimizeHyperparameters','all');
238
239
%% All Gleason
240
mdl_nb = fitcnb(train2(:,2:25),train2.Anot_Class,'OptimizeHyperparameters','all');
241
mdl_knn = fitcknn(train2(:,2:25),train2.Anot_Class,'OptimizeHyperparameters','all');
242
mdl_tree = fitctree(train2(:,2:25),train2.Anot_Class,'OptimizeHyperparameters','all');
243
mdl_ecoc = fitcecoc(train2(:,2:25),train2.Anot_Class,'OptimizeHyperparameters','auto');
244
mdl_ensemble = fitcensemble(train2(:,2:25),train2.Anot_Class,'OptimizeHyperparameters','all');
245
mdl_net = fitcnet(train2(:,2:25),train2.Anot_Class,'OptimizeHyperparameters','all');
246
247
%% Check Model Performance
248
mdl_nb_pred = predict(mdl_nb, test2(:,2:25));
249
mdl_knn_pred = predict(mdl_knn, test2(:,2:25));
250
mdl_tree_pred = predict(mdl_tree, test2(:,2:25));
251
mdl_ecoc_pred = predict(mdl_ecoc, test2(:,2:25));
252
mdl_ensemble_pred = predict(mdl_ensemble, test2(:,2:25));
253
mdl_net_pred = predict(mdl_net, test2(:,2:25));
254
255
mdl_hln_nb_pred = predict(mdl_hln_nb, test_hln(:,2:25));
256
mdl_hln_knn_pred = predict(mdl_hln_knn, test_hln(:,2:25));
257
mdl_hln_tree_pred = predict(mdl_hln_tree, test_hln(:,2:25));
258
mdl_hln_ecoc_pred = predict(mdl_hln_ecoc, test_hln(:,2:25));
259
mdl_hln_ensemble_pred = predict(mdl_hln_ensemble, test_hln(:,2:25));
260
mdl_hln_net_pred = predict(mdl_hln_net, test_hln(:,2:25));
261
262
mdl_nc_nb_pred = predict(mdl_nc_nb, test_nc(:,2:25));
263
mdl_nc_knn_pred = predict(mdl_nc_knn, test_nc(:,2:25));
264
mdl_nc_tree_pred = predict(mdl_nc_tree, test_nc(:,2:25));
265
mdl_nc_ecoc_pred = predict(mdl_nc_ecoc, test_nc(:,2:25));
266
mdl_nc_ensemble_pred = predict(mdl_nc_ensemble, test_nc(:,2:25));
267
mdl_nc_net_pred = predict(mdl_nc_net, test_nc(:,2:25));
268
269
mdl_ng_nb_pred = predict(mdl_ng_nb, test_ng(:,2:25));
270
mdl_ng_knn_pred = predict(mdl_ng_knn, test_ng(:,2:25));
271
mdl_ng_tree_pred = predict(mdl_ng_tree, test_ng(:,2:25));
272
mdl_ng_ecoc_pred = predict(mdl_ng_ecoc, test_ng(:,2:25));
273
mdl_ng_ensemble_pred = predict(mdl_ng_ensemble, test_ng(:,2:25));
274
mdl_ng_net_pred = predict(mdl_ng_net, test_ng(:,2:25));
275
%
276
tbl_mdl_nb = calculate_error(test2.Anot_Class,mdl_nb_pred);
277
tbl_mdl_knn = calculate_error(test2.Anot_Class,mdl_knn_pred);
278
tbl_mdl_tree = calculate_error(test2.Anot_Class,mdl_tree_pred);
279
tbl_mdl_ecoc = calculate_error(test2.Anot_Class,mdl_ecoc_pred);
280
tbl_mdl_ensemble = calculate_error(test2.Anot_Class,mdl_ensemble_pred);
281
tbl_mdl_net = calculate_error(test2.Anot_Class,mdl_net_pred);
282
283
tbl_mdl_hln_nb = calculate_error(test_hln.Anot_Class,mdl_hln_nb_pred);
284
tbl_mdl_hln_knn = calculate_error(test_hln.Anot_Class,mdl_hln_knn_pred);
285
tbl_mdl_hln_tree = calculate_error(test_hln.Anot_Class,mdl_hln_tree_pred);
286
tbl_mdl_hln_ecoc = calculate_error(test_hln.Anot_Class,mdl_hln_ecoc_pred);
287
tbl_mdl_hln_ensemble = calculate_error(test_hln.Anot_Class,mdl_hln_ensemble_pred);
288
tbl_mdl_hln_net = calculate_error(test_hln.Anot_Class,mdl_hln_net_pred);
289
290
tbl_mdl_nc_nb = calculate_error(test_nc.Anot_Class,mdl_nc_nb_pred);
291
tbl_mdl_nc_knn = calculate_error(test_nc.Anot_Class,mdl_nc_knn_pred);
292
tbl_mdl_nc_tree = calculate_error(test_nc.Anot_Class,mdl_nc_tree_pred);
293
tbl_mdl_nc_ecoc = calculate_error(test_nc.Anot_Class,mdl_nc_ecoc_pred);
294
tbl_mdl_nc_ensemble = calculate_error(test_nc.Anot_Class,mdl_nc_ensemble_pred);
295
tbl_mdl_nc_net = calculate_error(test_nc.Anot_Class,mdl_nc_net_pred);
296
297
tbl_mdl_ng_nb = calculate_error(test_ng.Anot_Class,mdl_nc_nb_pred);
298
tbl_mdl_ng_knn = calculate_error(test_ng.Anot_Class,mdl_nc_knn_pred);
299
tbl_mdl_ng_tree = calculate_error(test_ng.Anot_Class,mdl_nc_tree_pred);
300
tbl_mdl_ng_ecoc = calculate_error(test_ng.Anot_Class,mdl_nc_ecoc_pred);
301
tbl_mdl_ng_ensemble = calculate_error(test_ng.Anot_Class,mdl_nc_ensemble_pred);
302
tbl_mdl_ng_net = calculate_error(test_ng.Anot_Class,mdl_nc_net_pred);
303
%
304
prec_mdl_nb = sum(tbl_mdl_nb.TP) / (sum(tbl_mdl_nb.TP) + sum(tbl_mdl_nb.FP));
305
prec_mdl_knn = sum(tbl_mdl_knn.TP) / (sum(tbl_mdl_knn.TP) + sum(tbl_mdl_knn.FP));
306
prec_mdl_tree = sum(tbl_mdl_tree.TP) / (sum(tbl_mdl_tree.TP) + sum(tbl_mdl_tree.FP));
307
prec_mdl_ecoc = sum(tbl_mdl_ecoc.TP) / (sum(tbl_mdl_ecoc.TP) + sum(tbl_mdl_ecoc.FP));
308
prec_mdl_ensemble = sum(tbl_mdl_ensemble.TP) / (sum(tbl_mdl_ensemble.TP) + sum(tbl_mdl_ensemble.FP));
309
prec_mdl_net = sum(tbl_mdl_net.TP) / (sum(tbl_mdl_net.TP) + sum(tbl_mdl_net.FP));
310
311
prec_mdl_hln_nb = sum(tbl_mdl_hln_nb.TP) / (sum(tbl_mdl_hln_nb.TP) + sum(tbl_mdl_hln_nb.FP));
312
prec_mdl_hln_knn = sum(tbl_mdl_hln_knn.TP) / (sum(tbl_mdl_hln_knn.TP) + sum(tbl_mdl_hln_knn.FP));
313
prec_mdl_hln_tree = sum(tbl_mdl_hln_tree.TP) / (sum(tbl_mdl_hln_tree.TP) + sum(tbl_mdl_hln_tree.FP));
314
prec_mdl_hln_ecoc = sum(tbl_mdl_hln_ecoc.TP) / (sum(tbl_mdl_hln_ecoc.TP) + sum(tbl_mdl_hln_ecoc.FP));
315
prec_mdl_hln_ensemble = sum(tbl_mdl_hln_ensemble.TP) / (sum(tbl_mdl_hln_ensemble.TP) + sum(tbl_mdl_hln_ensemble.FP));
316
prec_mdl_hln_net = sum(tbl_mdl_hln_net.TP) / (sum(tbl_mdl_hln_net.TP) + sum(tbl_mdl_hln_net.FP));
317
318
prec_mdl_nc_nb = sum(tbl_mdl_nc_nb.TP) / (sum(tbl_mdl_nc_nb.TP) + sum(tbl_mdl_nc_nb.FP));
319
prec_mdl_nc_knn = sum(tbl_mdl_nc_knn.TP) / (sum(tbl_mdl_nc_knn.TP) + sum(tbl_mdl_nc_knn.FP));
320
prec_mdl_nc_tree = sum(tbl_mdl_nc_tree.TP) / (sum(tbl_mdl_nc_tree.TP) + sum(tbl_mdl_nc_tree.FP));
321
prec_mdl_nc_ecoc = sum(tbl_mdl_nc_ecoc.TP) / (sum(tbl_mdl_nc_ecoc.TP) + sum(tbl_mdl_nc_ecoc.FP));
322
prec_mdl_nc_ensemble = sum(tbl_mdl_nc_ensemble.TP) / (sum(tbl_mdl_nc_ensemble.TP) + sum(tbl_mdl_nc_ensemble.FP));
323
prec_mdl_nc_net = sum(tbl_mdl_nc_net.TP) / (sum(tbl_mdl_nc_net.TP) + sum(tbl_mdl_nc_net.FP));
324
325
prec_mdl_ng_nb = sum(tbl_mdl_ng_nb.TP) / (sum(tbl_mdl_ng_nb.TP) + sum(tbl_mdl_ng_nb.FP));
326
prec_mdl_ng_knn = sum(tbl_mdl_ng_knn.TP) / (sum(tbl_mdl_ng_knn.TP) + sum(tbl_mdl_ng_knn.FP));
327
prec_mdl_ng_tree = sum(tbl_mdl_ng_tree.TP) / (sum(tbl_mdl_ng_tree.TP) + sum(tbl_mdl_ng_tree.FP));
328
prec_mdl_ng_ecoc = sum(tbl_mdl_ng_ecoc.TP) / (sum(tbl_mdl_ng_ecoc.TP) + sum(tbl_mdl_ng_ecoc.FP));
329
prec_mdl_ng_ensemble = sum(tbl_mdl_ng_ensemble.TP) / (sum(tbl_mdl_ng_ensemble.TP) + sum(tbl_mdl_ng_ensemble.FP));
330
prec_mdl_ng_net = sum(tbl_mdl_ng_net.TP) / (sum(tbl_mdl_ng_net.TP) + sum(tbl_mdl_ng_net.FP));
331
%
332
rec_mdl_nb = sum(tbl_mdl_nb.TP) / (sum(tbl_mdl_nb.TP) + sum(tbl_mdl_nb.FN));
333
rec_mdl_knn = sum(tbl_mdl_knn.TP) / (sum(tbl_mdl_knn.TP) + sum(tbl_mdl_knn.FN));
334
rec_mdl_tree = sum(tbl_mdl_tree.TP) / (sum(tbl_mdl_tree.TP) + sum(tbl_mdl_tree.FN));
335
rec_mdl_ecoc = sum(tbl_mdl_ecoc.TP) / (sum(tbl_mdl_ecoc.TP) + sum(tbl_mdl_ecoc.FN));
336
rec_mdl_ensemble = sum(tbl_mdl_ensemble.TP) / (sum(tbl_mdl_ensemble.TP) + sum(tbl_mdl_ensemble.FN));
337
rec_mdl_net = sum(tbl_mdl_net.TP) / (sum(tbl_mdl_net.TP) + sum(tbl_mdl_net.FN));
338
339
rec_mdl_hln_nb = sum(tbl_mdl_hln_nb.TP) / (sum(tbl_mdl_hln_nb.TP) + sum(tbl_mdl_hln_nb.FN));
340
rec_mdl_hln_knn = sum(tbl_mdl_hln_knn.TP) / (sum(tbl_mdl_hln_knn.TP) + sum(tbl_mdl_hln_knn.FN));
341
rec_mdl_hln_tree = sum(tbl_mdl_hln_tree.TP) / (sum(tbl_mdl_hln_tree.TP) + sum(tbl_mdl_hln_tree.FN));
342
rec_mdl_hln_ecoc = sum(tbl_mdl_hln_ecoc.TP) / (sum(tbl_mdl_hln_ecoc.TP) + sum(tbl_mdl_hln_ecoc.FN));
343
rec_mdl_hln_ensemble = sum(tbl_mdl_hln_ensemble.TP) / (sum(tbl_mdl_hln_ensemble.TP) + sum(tbl_mdl_hln_ensemble.FN));
344
rec_mdl_hln_net = sum(tbl_mdl_hln_net.TP) / (sum(tbl_mdl_hln_net.TP) + sum(tbl_mdl_hln_net.FN));
345
346
rec_mdl_nc_nb = sum(tbl_mdl_nc_nb.TP) / (sum(tbl_mdl_nc_nb.TP) + sum(tbl_mdl_nc_nb.FN));
347
rec_mdl_nc_knn = sum(tbl_mdl_nc_knn.TP) / (sum(tbl_mdl_nc_knn.TP) + sum(tbl_mdl_nc_knn.FN));
348
rec_mdl_nc_tree = sum(tbl_mdl_nc_tree.TP) / (sum(tbl_mdl_nc_tree.TP) + sum(tbl_mdl_nc_tree.FN));
349
rec_mdl_nc_ecoc = sum(tbl_mdl_nc_ecoc.TP) / (sum(tbl_mdl_nc_ecoc.TP) + sum(tbl_mdl_nc_ecoc.FN));
350
rec_mdl_nc_ensemble = sum(tbl_mdl_nc_ensemble.TP) / (sum(tbl_mdl_nc_ensemble.TP) + sum(tbl_mdl_nc_ensemble.FN));
351
rec_mdl_nc_net = sum(tbl_mdl_nc_net.TP) / (sum(tbl_mdl_nc_net.TP) + sum(tbl_mdl_nc_net.FN));
352
353
rec_mdl_ng_nb = sum(tbl_mdl_ng_nb.TP) / (sum(tbl_mdl_ng_nb.TP) + sum(tbl_mdl_ng_nb.FN));
354
rec_mdl_ng_knn = sum(tbl_mdl_ng_knn.TP) / (sum(tbl_mdl_ng_knn.TP) + sum(tbl_mdl_ng_knn.FN));
355
rec_mdl_ng_tree = sum(tbl_mdl_ng_tree.TP) / (sum(tbl_mdl_ng_tree.TP) + sum(tbl_mdl_ng_tree.FN));
356
rec_mdl_ng_ecoc = sum(tbl_mdl_ng_ecoc.TP) / (sum(tbl_mdl_ng_ecoc.TP) + sum(tbl_mdl_ng_ecoc.FN));
357
rec_mdl_ng_ensemble = sum(tbl_mdl_ng_ensemble.TP) / (sum(tbl_mdl_ng_ensemble.TP) + sum(tbl_mdl_ng_ensemble.FN));
358
rec_mdl_ng_net = sum(tbl_mdl_ng_net.TP) / (sum(tbl_mdl_ng_net.TP) + sum(tbl_mdl_ng_net.FN));
359
%
360
F_mdl_nb = 2*(prec_mdl_nb * rec_mdl_nb) / (prec_mdl_nb + rec_mdl_nb);
361
F_mdl_knn = 2*(prec_mdl_knn * rec_mdl_knn) / (prec_mdl_knn + rec_mdl_knn);
362
F_mdl_tree = 2*(prec_mdl_tree * rec_mdl_tree) / (prec_mdl_tree + rec_mdl_tree);
363
F_mdl_ecoc = 2*(prec_mdl_ecoc * rec_mdl_ecoc) / (prec_mdl_ecoc + rec_mdl_ecoc);
364
F_mdl_ensemble = 2*(prec_mdl_ensemble * rec_mdl_ensemble) / (prec_mdl_ensemble + rec_mdl_ensemble);
365
F_mdl_net = 2*(prec_mdl_net * rec_mdl_net) / (prec_mdl_net + rec_mdl_net);
366
367
F_mdl_hln_nb = 2*(prec_mdl_hln_nb * rec_mdl_hln_nb) / (prec_mdl_hln_nb + rec_mdl_hln_nb);
368
F_mdl_hln_knn = 2*(prec_mdl_hln_knn * rec_mdl_hln_knn) / (prec_mdl_hln_knn + rec_mdl_hln_knn);
369
F_mdl_hln_tree = 2*(prec_mdl_hln_tree * rec_mdl_hln_tree) / (prec_mdl_hln_tree + rec_mdl_hln_tree);
370
F_mdl_hln_ecoc = 2*(prec_mdl_hln_ecoc * rec_mdl_hln_ecoc) / (prec_mdl_hln_ecoc + rec_mdl_hln_ecoc);
371
F_mdl_hln_ensemble = 2*(prec_mdl_hln_ensemble * rec_mdl_hln_ensemble) / (prec_mdl_hln_ensemble + rec_mdl_hln_ensemble);
372
F_mdl_hln_net = 2*(prec_mdl_hln_net * rec_mdl_hln_net) / (prec_mdl_hln_net + rec_mdl_hln_net);
373
374
F_mdl_nc_nb = 2*(prec_mdl_nc_nb * rec_mdl_nc_nb) / (prec_mdl_nc_nb + rec_mdl_nc_nb);
375
F_mdl_nc_knn = 2*(prec_mdl_nc_knn * rec_mdl_nc_knn) / (prec_mdl_nc_knn + rec_mdl_nc_knn);
376
F_mdl_nc_tree = 2*(prec_mdl_nc_tree * rec_mdl_nc_tree) / (prec_mdl_nc_tree + rec_mdl_nc_tree);
377
F_mdl_nc_ecoc = 2*(prec_mdl_nc_ecoc * rec_mdl_nc_ecoc) / (prec_mdl_nc_ecoc + rec_mdl_nc_ecoc);
378
F_mdl_nc_ensemble = 2*(prec_mdl_nc_ensemble * rec_mdl_nc_ensemble) / (prec_mdl_nc_ensemble + rec_mdl_nc_ensemble);
379
F_mdl_nc_net = 2*(prec_mdl_nc_net * rec_mdl_nc_net) / (prec_mdl_nc_net + rec_mdl_nc_net);
380
381
F_mdl_ng_nb = 2*(prec_mdl_ng_nb * rec_mdl_ng_nb) / (prec_mdl_ng_nb + rec_mdl_ng_nb);
382
F_mdl_ng_knn = 2*(prec_mdl_ng_knn * rec_mdl_ng_knn) / (prec_mdl_ng_knn + rec_mdl_ng_knn);
383
F_mdl_ng_tree = 2*(prec_mdl_ng_tree * rec_mdl_ng_tree) / (prec_mdl_ng_tree + rec_mdl_ng_tree);
384
F_mdl_ng_ecoc = 2*(prec_mdl_ng_ecoc * rec_mdl_ng_ecoc) / (prec_mdl_ng_ecoc + rec_mdl_ng_ecoc);
385
F_mdl_ng_ensemble = 2*(prec_mdl_ng_ensemble * rec_mdl_ng_ensemble) / (prec_mdl_ng_ensemble + rec_mdl_ng_ensemble);
386
F_mdl_ng_net = 2*(prec_mdl_ng_net * rec_mdl_ng_net) / (prec_mdl_ng_net + rec_mdl_ng_net);
387
%
388
acc_mdl_nb = (sum(tbl_mdl_nb.TP )+ sum(tbl_mdl_nb.TN)) / (sum(tbl_mdl_nb.TP) + sum(tbl_mdl_nb.FP) + sum(tbl_mdl_nb.TN) + sum(tbl_mdl_nb.FN));
389
acc_mdl_knn = (sum(tbl_mdl_knn.TP )+ sum(tbl_mdl_knn.TN)) / (sum(tbl_mdl_knn.TP) + sum(tbl_mdl_knn.FP) + sum(tbl_mdl_knn.TN) + sum(tbl_mdl_knn.FN));
390
acc_mdl_tree = (sum(tbl_mdl_tree.TP )+ sum(tbl_mdl_tree.TN)) / (sum(tbl_mdl_tree.TP) + sum(tbl_mdl_tree.FP) + sum(tbl_mdl_tree.TN) + sum(tbl_mdl_tree.FN));
391
acc_mdl_ecoc = (sum(tbl_mdl_ecoc.TP )+ sum(tbl_mdl_ecoc.TN)) / (sum(tbl_mdl_ecoc.TP) + sum(tbl_mdl_ecoc.FP) + sum(tbl_mdl_ecoc.TN) + sum(tbl_mdl_ecoc.FN));
392
acc_mdl_ensemble = (sum(tbl_mdl_ensemble.TP )+ sum(tbl_mdl_ensemble.TN)) / (sum(tbl_mdl_ensemble.TP) + sum(tbl_mdl_ensemble.FP) + sum(tbl_mdl_ensemble.TN) + sum(tbl_mdl_ensemble.FN));
393
acc_mdl_net = (sum(tbl_mdl_net.TP )+ sum(tbl_mdl_net.TN)) / (sum(tbl_mdl_net.TP) + sum(tbl_mdl_net.FP) + sum(tbl_mdl_net.TN) + sum(tbl_mdl_net.FN));
394
395
acc_mdl_hln_nb = (sum(tbl_mdl_hln_nb.TP )+ sum(tbl_mdl_hln_nb.TN)) / (sum(tbl_mdl_hln_nb.TP) + sum(tbl_mdl_hln_nb.FP) + sum(tbl_mdl_hln_nb.TN) + sum(tbl_mdl_hln_nb.FN));
396
acc_mdl_hln_knn = (sum(tbl_mdl_hln_knn.TP )+ sum(tbl_mdl_hln_knn.TN)) / (sum(tbl_mdl_hln_knn.TP) + sum(tbl_mdl_hln_knn.FP) + sum(tbl_mdl_hln_knn.TN) + sum(tbl_mdl_hln_knn.FN));
397
acc_mdl_hln_tree = (sum(tbl_mdl_hln_tree.TP )+ sum(tbl_mdl_hln_tree.TN)) / (sum(tbl_mdl_hln_tree.TP) + sum(tbl_mdl_hln_tree.FP) + sum(tbl_mdl_hln_tree.TN) + sum(tbl_mdl_hln_tree.FN));
398
acc_mdl_hln_ecoc = (sum(tbl_mdl_hln_ecoc.TP )+ sum(tbl_mdl_hln_ecoc.TN)) / (sum(tbl_mdl_hln_ecoc.TP) + sum(tbl_mdl_hln_ecoc.FP) + sum(tbl_mdl_hln_ecoc.TN) + sum(tbl_mdl_hln_ecoc.FN));
399
acc_mdl_hln_ensemble = (sum(tbl_mdl_hln_ensemble.TP )+ sum(tbl_mdl_hln_ensemble.TN)) / (sum(tbl_mdl_hln_ensemble.TP) + sum(tbl_mdl_hln_ensemble.FP) + sum(tbl_mdl_hln_ensemble.TN) + sum(tbl_mdl_hln_ensemble.FN));
400
acc_mdl_hln_net = (sum(tbl_mdl_hln_net.TP )+ sum(tbl_mdl_hln_net.TN)) / (sum(tbl_mdl_hln_net.TP) + sum(tbl_mdl_hln_net.FP) + sum(tbl_mdl_hln_net.TN) + sum(tbl_mdl_hln_net.FN));
401
402
acc_mdl_nc_nb = (sum(tbl_mdl_nc_nb.TP )+ sum(tbl_mdl_nc_nb.TN)) / (sum(tbl_mdl_nc_nb.TP) + sum(tbl_mdl_nc_nb.FP) + sum(tbl_mdl_nc_nb.TN) + sum(tbl_mdl_nc_nb.FN));
403
acc_mdl_nc_knn = (sum(tbl_mdl_nc_knn.TP )+ sum(tbl_mdl_nc_knn.TN)) / (sum(tbl_mdl_nc_knn.TP) + sum(tbl_mdl_nc_knn.FP) + sum(tbl_mdl_nc_knn.TN) + sum(tbl_mdl_nc_knn.FN));
404
acc_mdl_nc_tree = (sum(tbl_mdl_nc_tree.TP )+ sum(tbl_mdl_nc_tree.TN)) / (sum(tbl_mdl_nc_tree.TP) + sum(tbl_mdl_nc_tree.FP) + sum(tbl_mdl_nc_tree.TN) + sum(tbl_mdl_nc_tree.FN));
405
acc_mdl_nc_ecoc = (sum(tbl_mdl_nc_ecoc.TP )+ sum(tbl_mdl_nc_ecoc.TN)) / (sum(tbl_mdl_nc_ecoc.TP) + sum(tbl_mdl_nc_ecoc.FP) + sum(tbl_mdl_nc_ecoc.TN) + sum(tbl_mdl_nc_ecoc.FN));
406
acc_mdl_nc_ensemble = (sum(tbl_mdl_nc_ensemble.TP )+ sum(tbl_mdl_nc_ensemble.TN)) / (sum(tbl_mdl_nc_ensemble.TP) + sum(tbl_mdl_nc_ensemble.FP) + sum(tbl_mdl_nc_ensemble.TN) + sum(tbl_mdl_nc_ensemble.FN));
407
acc_mdl_nc_net = (sum(tbl_mdl_nc_net.TP )+ sum(tbl_mdl_nc_net.TN)) / (sum(tbl_mdl_nc_net.TP) + sum(tbl_mdl_nc_net.FP) + sum(tbl_mdl_nc_net.TN) + sum(tbl_mdl_nc_net.FN));
408
409
acc_mdl_ng_nb = (sum(tbl_mdl_ng_nb.TP )+ sum(tbl_mdl_ng_nb.TN)) / (sum(tbl_mdl_ng_nb.TP) + sum(tbl_mdl_ng_nb.FP) + sum(tbl_mdl_ng_nb.TN) + sum(tbl_mdl_ng_nb.FN));
410
acc_mdl_ng_knn = (sum(tbl_mdl_ng_knn.TP )+ sum(tbl_mdl_ng_knn.TN)) / (sum(tbl_mdl_ng_knn.TP) + sum(tbl_mdl_ng_knn.FP) + sum(tbl_mdl_ng_knn.TN) + sum(tbl_mdl_ng_knn.FN));
411
acc_mdl_ng_tree = (sum(tbl_mdl_ng_tree.TP )+ sum(tbl_mdl_ng_tree.TN)) / (sum(tbl_mdl_ng_tree.TP) + sum(tbl_mdl_ng_tree.FP) + sum(tbl_mdl_ng_tree.TN) + sum(tbl_mdl_ng_tree.FN));
412
acc_mdl_ng_ecoc = (sum(tbl_mdl_ng_ecoc.TP )+ sum(tbl_mdl_ng_ecoc.TN)) / (sum(tbl_mdl_ng_ecoc.TP) + sum(tbl_mdl_ng_ecoc.FP) + sum(tbl_mdl_ng_ecoc.TN) + sum(tbl_mdl_ng_ecoc.FN));
413
acc_mdl_ng_ensemble = (sum(tbl_mdl_ng_ensemble.TP )+ sum(tbl_mdl_ng_ensemble.TN)) / (sum(tbl_mdl_ng_ensemble.TP) + sum(tbl_mdl_ng_ensemble.FP) + sum(tbl_mdl_ng_ensemble.TN) + sum(tbl_mdl_ng_ensemble.FN));
414
acc_mdl_ng_net = (sum(tbl_mdl_ng_net.TP )+ sum(tbl_mdl_ng_net.TN)) / (sum(tbl_mdl_ng_net.TP) + sum(tbl_mdl_ng_net.FP) + sum(tbl_mdl_ng_net.TN) + sum(tbl_mdl_ng_net.FN));
415
%
416
spec_mdl_nb = sum(tbl_mdl_nb.TN) / (sum(tbl_mdl_nb.TN) + sum(tbl_mdl_nb.FP));
417
spec_mdl_knn = sum(tbl_mdl_knn.TN) / (sum(tbl_mdl_knn.TN) + sum(tbl_mdl_knn.FP));
418
spec_mdl_tree = sum(tbl_mdl_tree.TN) / (sum(tbl_mdl_tree.TN) + sum(tbl_mdl_tree.FP));
419
spec_mdl_ecoc = sum(tbl_mdl_ecoc.TN) / (sum(tbl_mdl_ecoc.TN) + sum(tbl_mdl_ecoc.FP));
420
spec_mdl_ensemble = sum(tbl_mdl_ensemble.TN) / (sum(tbl_mdl_ensemble.TN) + sum(tbl_mdl_ensemble.FP));
421
spec_mdl_net = sum(tbl_mdl_net.TN) / (sum(tbl_mdl_net.TN) + sum(tbl_mdl_net.FP));
422
423
spec_mdl_hln_nb = sum(tbl_mdl_hln_nb.TN) / (sum(tbl_mdl_hln_nb.TN) + sum(tbl_mdl_hln_nb.FP));
424
spec_mdl_hln_knn = sum(tbl_mdl_hln_knn.TN) / (sum(tbl_mdl_hln_knn.TN) + sum(tbl_mdl_hln_knn.FP));
425
spec_mdl_hln_tree = sum(tbl_mdl_hln_tree.TN) / (sum(tbl_mdl_hln_tree.TN) + sum(tbl_mdl_hln_tree.FP));
426
spec_mdl_hln_ecoc = sum(tbl_mdl_hln_ecoc.TN) / (sum(tbl_mdl_hln_ecoc.TN) + sum(tbl_mdl_hln_ecoc.FP));
427
spec_mdl_hln_ensemble = sum(tbl_mdl_hln_ensemble.TN) / (sum(tbl_mdl_hln_ensemble.TN) + sum(tbl_mdl_hln_ensemble.FP));
428
spec_mdl_hln_net = sum(tbl_mdl_hln_net.TN) / (sum(tbl_mdl_hln_net.TN) + sum(tbl_mdl_hln_net.FP));
429
430
spec_mdl_nc_nb = sum(tbl_mdl_nc_nb.TN) / (sum(tbl_mdl_nc_nb.TN) + sum(tbl_mdl_nc_nb.FP));
431
spec_mdl_nc_knn = sum(tbl_mdl_nc_knn.TN) / (sum(tbl_mdl_nc_knn.TN) + sum(tbl_mdl_nc_knn.FP));
432
spec_mdl_nc_tree = sum(tbl_mdl_nc_tree.TN) / (sum(tbl_mdl_nc_tree.TN) + sum(tbl_mdl_nc_tree.FP));
433
spec_mdl_nc_ecoc = sum(tbl_mdl_nc_ecoc.TN) / (sum(tbl_mdl_nc_ecoc.TN) + sum(tbl_mdl_nc_ecoc.FP));
434
spec_mdl_nc_ensemble = sum(tbl_mdl_nc_ensemble.TN) / (sum(tbl_mdl_nc_ensemble.TN) + sum(tbl_mdl_nc_ensemble.FP));
435
spec_mdl_nc_net = sum(tbl_mdl_nc_net.TN) / (sum(tbl_mdl_nc_net.TN) + sum(tbl_mdl_nc_net.FP));
436
437
spec_mdl_ng_nb = sum(tbl_mdl_ng_nb.TN) / (sum(tbl_mdl_ng_nb.TN) + sum(tbl_mdl_ng_nb.FP));
438
spec_mdl_ng_knn = sum(tbl_mdl_ng_knn.TN) / (sum(tbl_mdl_ng_knn.TN) + sum(tbl_mdl_ng_knn.FP));
439
spec_mdl_ng_tree = sum(tbl_mdl_ng_tree.TN) / (sum(tbl_mdl_ng_tree.TN) + sum(tbl_mdl_ng_tree.FP));
440
spec_mdl_ng_ecoc = sum(tbl_mdl_ng_ecoc.TN) / (sum(tbl_mdl_ng_ecoc.TN) + sum(tbl_mdl_ng_ecoc.FP));
441
spec_mdl_ng_ensemble = sum(tbl_mdl_ng_ensemble.TN) / (sum(tbl_mdl_ng_ensemble.TN) + sum(tbl_mdl_ng_ensemble.FP));
442
spec_mdl_ng_net = sum(tbl_mdl_ng_net.TN) / (sum(tbl_mdl_ng_net.TN) + sum(tbl_mdl_ng_net.FP));
443
444
%% Make Final Tables
445
tbl_mdl = [tbl_mdl_nb;tbl_mdl_knn;tbl_mdl_tree;tbl_mdl_ecoc;tbl_mdl_ensemble;tbl_mdl_net;...
446
    tbl_mdl_hln_nb;tbl_mdl_hln_knn;tbl_mdl_hln_tree;tbl_mdl_hln_ecoc;tbl_mdl_hln_ensemble;tbl_mdl_hln_net;...
447
    tbl_mdl_nc_nb;tbl_mdl_nc_knn;tbl_mdl_nc_tree;tbl_mdl_nc_ecoc;tbl_mdl_nc_ensemble;tbl_mdl_nc_net;...
448
    tbl_mdl_ng_nb;tbl_mdl_ng_knn;tbl_mdl_ng_tree;tbl_mdl_ng_ecoc;tbl_mdl_ng_ensemble;tbl_mdl_ng_net];
449
450
overall_tbl = [prec_mdl_nb, rec_mdl_nb, spec_mdl_nb, F_mdl_nb, acc_mdl_nb;...
451
    prec_mdl_knn, rec_mdl_knn, spec_mdl_knn, F_mdl_knn, acc_mdl_knn;...
452
    prec_mdl_tree, rec_mdl_tree, spec_mdl_tree, F_mdl_tree, acc_mdl_tree;...
453
    prec_mdl_ecoc, rec_mdl_ecoc, spec_mdl_ecoc, F_mdl_ecoc, acc_mdl_ecoc;...
454
    prec_mdl_ensemble, rec_mdl_ensemble, spec_mdl_ensemble, F_mdl_ensemble, acc_mdl_ensemble;...
455
    prec_mdl_net, rec_mdl_net, spec_mdl_net, F_mdl_net, acc_mdl_net;...
456
    
457
    prec_mdl_hln_nb, rec_mdl_hln_nb, spec_mdl_hln_nb, F_mdl_hln_nb, acc_mdl_hln_nb;...
458
    prec_mdl_hln_knn, rec_mdl_hln_knn, spec_mdl_hln_knn, F_mdl_hln_knn, acc_mdl_hln_knn;...
459
    prec_mdl_hln_tree, rec_mdl_hln_tree, spec_mdl_hln_tree, F_mdl_hln_tree, acc_mdl_hln_tree;...
460
    prec_mdl_hln_ecoc, rec_mdl_hln_ecoc, spec_mdl_hln_ecoc, F_mdl_hln_ecoc, acc_mdl_hln_ecoc;...
461
    prec_mdl_hln_ensemble, rec_mdl_hln_ensemble, spec_mdl_hln_ensemble, F_mdl_hln_ensemble, acc_mdl_hln_ensemble;...
462
    prec_mdl_hln_net, rec_mdl_hln_net, spec_mdl_hln_net, F_mdl_hln_net, acc_mdl_hln_net;...
463
    
464
    prec_mdl_nc_nb, rec_mdl_nc_nb, spec_mdl_nc_nb, F_mdl_nc_nb, acc_mdl_nc_nb;...
465
    prec_mdl_nc_knn, rec_mdl_nc_knn, spec_mdl_nc_knn, F_mdl_nc_knn, acc_mdl_nc_knn;...
466
    prec_mdl_nc_tree, rec_mdl_nc_tree, spec_mdl_nc_tree, F_mdl_nc_tree, acc_mdl_nc_tree;...
467
    prec_mdl_nc_ecoc, rec_mdl_nc_ecoc, spec_mdl_nc_ecoc, F_mdl_nc_ecoc, acc_mdl_nc_ecoc;...
468
    prec_mdl_nc_ensemble, rec_mdl_nc_ensemble, spec_mdl_nc_ensemble, F_mdl_nc_ensemble, acc_mdl_nc_ensemble;...
469
    prec_mdl_nc_net, rec_mdl_nc_net, spec_mdl_nc_net, F_mdl_nc_net, acc_mdl_nc_net;...
470
    
471
    prec_mdl_ng_nb, rec_mdl_ng_nb, spec_mdl_ng_nb, F_mdl_ng_nb, acc_mdl_ng_nb;...
472
    prec_mdl_ng_knn, rec_mdl_ng_knn, spec_mdl_ng_knn, F_mdl_ng_knn, acc_mdl_ng_knn;...
473
    prec_mdl_ng_tree, rec_mdl_ng_tree, spec_mdl_ng_tree, F_mdl_ng_tree, acc_mdl_ng_tree;...
474
    prec_mdl_ng_ecoc, rec_mdl_ng_ecoc, spec_mdl_ng_ecoc, F_mdl_ng_ecoc, acc_mdl_ng_ecoc;...
475
    prec_mdl_ng_ensemble, rec_mdl_ng_ensemble, spec_mdl_ng_ensemble, F_mdl_ng_ensemble, acc_mdl_ng_ensemble;...
476
    prec_mdl_ng_net, rec_mdl_ng_net, spec_mdl_ng_net, F_mdl_ng_net, acc_mdl_ng_net];
477
478
%
479
figure(); confusionchart(char(test2.Anot_Class), char(mdl_nb_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
480
figure(); confusionchart(char(test2.Anot_Class), char(mdl_knn_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
481
figure(); confusionchart(char(test2.Anot_Class), char(mdl_tree_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
482
figure(); confusionchart(char(test2.Anot_Class), char(mdl_ecoc_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
483
figure(); confusionchart(char(test2.Anot_Class), char(mdl_ensemble_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
484
figure(); confusionchart(char(test2.Anot_Class), char(mdl_net_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
485
486
figure(); confusionchart(char(test_hln.Anot_Class), char(mdl_hln_nb_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
487
figure(); confusionchart(char(test_hln.Anot_Class), char(mdl_hln_knn_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
488
figure(); confusionchart(char(test_hln.Anot_Class), char(mdl_hln_tree_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
489
figure(); confusionchart(char(test_hln.Anot_Class), char(mdl_hln_ecoc_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
490
figure(); confusionchart(char(test_hln.Anot_Class), char(mdl_hln_ensemble_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
491
figure(); confusionchart(char(test_hln.Anot_Class), char(mdl_hln_net_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
492
493
figure(); confusionchart(char(test_nc.Anot_Class), char(mdl_nc_nb_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
494
figure(); confusionchart(char(test_nc.Anot_Class), char(mdl_nc_knn_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
495
figure(); confusionchart(char(test_nc.Anot_Class), char(mdl_nc_tree_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
496
figure(); confusionchart(char(test_nc.Anot_Class), char(mdl_nc_ecoc_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
497
figure(); confusionchart(char(test_nc.Anot_Class), char(mdl_nc_ensemble_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
498
figure(); confusionchart(char(test_nc.Anot_Class), char(mdl_nc_net_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
499
500
figure(); confusionchart(char(test_ng.Anot_Class), char(mdl_ng_nb_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
501
figure(); confusionchart(char(test_ng.Anot_Class), char(mdl_ng_knn_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
502
figure(); confusionchart(char(test_ng.Anot_Class), char(mdl_ng_tree_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
503
figure(); confusionchart(char(test_ng.Anot_Class), char(mdl_ng_ecoc_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
504
figure(); confusionchart(char(test_ng.Anot_Class), char(mdl_ng_ensemble_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
505
figure(); confusionchart(char(test_ng.Anot_Class), char(mdl_ng_net_pred), 'RowSummary','row-normalized','ColumnSummary','column-normalized');
506
507
%% Demonstration models
508
figure
509
confusionchart(feature_tbl_2235.Anot_Class,predict(mdl_auto_nc_unbal,feature_tbl_2235(:,(8:end))),'RowSummary','row-normalized','ColumnSummary','column-normalized')
510
title('confusion matrix 2235')
511
figure
512
confusionchart(feature_tbl_2181.Anot_Class,predict(mdl_auto_nc_unbal,feature_tbl_2181(:,(8:end))),'RowSummary','row-normalized','ColumnSummary','column-normalized')
513
title('confusion matrix 2181')
514
515
516
mdl_2181 = 1 - loss(mdl_auto_nc_unbal,feature_tbl_2181(:,[2,8:end]),'Anot_Class');
517
mdl_2181_lbs = predict(mdl_auto_nc_unbal,feature_tbl_2181(:,[8:end]));
518
519
mdl_2235 = 1 - loss(mdl_auto_nc_unbal,feature_tbl_2235(:,[4,8:end]),'Anot_Class');
520
mdl_2235_lbs = predict(mdl_auto_nc_unbal,feature_tbl_2235(:,[8:end]));
521
522
mdl_1163 = 1 - loss(mdl_auto_nc_unbal,feature_tbl_1163(:,[2,6:end]),'Anot_Class');
523
mdl_1163_lbs = predict(mdl_auto_nc_unbal,feature_tbl_1163(:,[6:end]));
524
525
%%%%%%
526
mdl_2181 = 1 - loss(mdl_auto_unbal_ng,feature_tbl_2181(:,[2,8:end]),'Anot_Class');
527
mdl_2181_lbs = predict(new_mdl,table2array(feature_tbl_2181(:,8:end)));
528
529
mdl_2235 = 1 - loss(mdl_auto_unbal_ng,feature_tbl_2235(:,4,8:end),'Anot_Class');
530
mdl_2235_lbs = predict(new_mdl,table2array(feature_tbl_2235(:,8:end)));
531
532
mdl_1163 = 1 - loss(mdl_auto_unbal_ng,feature_tbl_1163(:,2,6:end),'Anot_Class');
533
mdl_1163_lbs = predict(new_mdl,table2array(feature_tbl_1163(:,6:end)));
534
535
figure
536
confusionchart(train_ng.Anot_Class,predict(mdl_auto_unbal_ng,table2array(train_ng(:,2:25))),'RowSummary','row-normalized','ColumnSummary','column-normalized')
537
title('confusion matrix test')
538
539
540
%% Create Whole Mounts
541
% anot_names = {'Atrophy','Seminal_Vesicles','HGPIN','Tissue','G3','G4CG','G4FG','G5','Background'};
542
% map = [0 0 0 % atrophy
543
%     0 0 255
544
%     255 120 0
545
%     220 140 200 %%
546
%     50 255 0
547
%     255 20 255
548
%     255 250 20
549
%     0 255 255
550
%     220 222 221]; 
551
% 
552
anot_names = {'Normal','G3','G4CG','G4FG','G5','Background'};
553
map = [220 140 200
554
    50 255 0
555
    255 20 255
556
    255 250 20
557
    0 255 255
558
    220 222 221];
559
560
% anot_names = {'Normal','Cancer','Background'};
561
% map = [220 140 200
562
%     50 255 0
563
%     255 20 255
564
%     255 250 20
565
%     0 255 255
566
%     255 255 255];
567
% %     220 222 221];
568
569
anot_names = {'Normal','Low','High','Background'};
570
map = [220 140 200
571
    255 0 0
572
    0 0 255
573
    220 222 221];
574
map = uint8(map);
575
576
feature_tbl_2181 = [feature_tbl_2181 table(mdl_2181_lbs)];
577
feature_tbl_2181.Properties.VariableNames{32} = 'prediction';
578
feature_tbl_2181.prediction = categorical(feature_tbl_2181.prediction);
579
580
for i = 1:numel(anot_names)
581
    loc = find(feature_tbl_2181.prediction == anot_names{i});
582
    feature_tbl_2181(loc,33) = {i};
583
end
584
feature_tbl_2181.Properties.VariableNames{33} = 'pred_indx';
585
586
wm2181 = zeros(34,41);
587
for h = 1:height(feature_tbl_2181)
588
    tile = feature_tbl_2181.Tile_Name{h};
589
    name = strsplit(tile,{'_','.'});
590
    i = str2num(name{4}(2:end));
591
    j = str2num(name{5}(2:end));
592
    wm2181(j,i) = feature_tbl_2181.pred_indx(h);
593
end
594
wm2181(find(wm2181==0)) = numel(anot_names);
595
596
figure();
597
imagesc(wm2181); colormap(map); title('classifier');
598
599
600
feature_tbl_2235 = [feature_tbl_2235 table(mdl_2235_lbs)];
601
feature_tbl_2235.Tile_Name = cellstr(feature_tbl_2235.Tile_Name);
602
feature_tbl_2235.Properties.VariableNames{32} = 'prediction';
603
feature_tbl_2235.prediction = categorical(feature_tbl_2235.prediction);
604
for i = 1:numel(anot_names)
605
    loc = find(feature_tbl_2235.prediction == anot_names{i});
606
    feature_tbl_2235(loc,33) = {i};
607
end
608
feature_tbl_2235.Properties.VariableNames{33} = 'pred_indx';
609
610
611
wm2235 = zeros(24,31);
612
for h = 1:height(feature_tbl_2235)
613
    tile = feature_tbl_2235.Tile_Name{h};
614
    name = strsplit(tile,{'_','.'});
615
    i = str2num(name{4}(2:end));
616
    j = str2num(name{5}(2:end));
617
    wm2235(j,i) = feature_tbl_2235.pred_indx(h);
618
end
619
620
wm2235(find(wm2235==0)) = numel(anot_names);
621
622
figure();
623
imagesc(wm2235); colormap(map); title('classifier');
624
625
626
feature_tbl_1163 = [feature_tbl_1163 table(mdl_1163_lbs)];
627
feature_tbl_1163.Tile_Name = cellstr(feature_tbl_1163.Tile_Name);
628
feature_tbl_1163.Properties.VariableNames{30} = 'prediction';
629
feature_tbl_1163.prediction = categorical(feature_tbl_1163.prediction);
630
for i = 1:numel(anot_names)
631
    loc = find(feature_tbl_1163.prediction == anot_names{i});
632
    feature_tbl_1163(loc,31) = {i};
633
end
634
feature_tbl_1163.Properties.VariableNames{31} = 'pred_indx';
635
636
637
wm1163 = zeros(39,33);
638
for h = 1:height(feature_tbl_1163)
639
    tile = feature_tbl_1163.Tile_Name{h};
640
    name = strsplit(tile,{'_','.'});
641
    i = str2num(name{4}(2:end));
642
    j = str2num(name{5}(2:end));
643
    wm1163(j,i) = feature_tbl_1163.pred_indx(h);
644
end
645
646
wm1163(find(wm1163==0)) = numel(anot_names);
647
648
figure();
649
imagesc(wm1163); colormap(map); title('classifier');
650
651
652
anot_2181 = imread('/Volumes/Hera/Prostate_Data/2181/Hist/9/Olympus/large_recon_8_ANOT.tif');
653
anot_2181 = anot_2181(:,:,1:3);
654
whole_image2181 = imread('/Volumes/Hera/Prostate_Data/2181/Hist/9/Olympus/large_recon_8_nowhite.tiff');
655
656
[Seminal_Vesicles,Atrophy,HGPIN,G3,G4FG,G4CG,G5,tissue_mask] = color_thresh_masks(anot_2181,whole_image2181,0,0);
657
658
% Normal vs Cancer
659
ken2181 = (Atrophy+HGPIN+Seminal_Vesicles+tissue_mask) + 2*G3 + 3*G4CG + 4*G4FG + 5*G5;
660
ken2181(find(ken2181==0)) = numel(anot_names);
661
% figure(); imagesc(ken2181); colormap(map);
662
663
atari_2181 = imresize(ken2181,size(wm2181),'nearest');
664
% figure(); imagesc(atari_2181); colormap(map)
665
666
wm2181(find(atari_2181 == numel(anot_names))) = numel(anot_names);
667
atari_2181(find(wm2181 == numel(anot_names))) = numel(anot_names);
668
figure(); 
669
subplot(121); imagesc(wm2181); colormap(map); title('classifier'); axis image
670
subplot(122); imagesc(atari_2181); colormap(map); title('ken'); axis image
671
672
for i = 1:numel(anot_names)
673
    comp_table2(i,1) = {anot_names{i}};
674
    comp_table2(i,2) = {numel(find(atari_2181 == i))}; % Ken volume
675
    comp_table2(i,3) = {numel(find(wm2181 == i))}; % Classifier volume
676
    comp_table2(i,4) = {dice((atari_2181==i),(wm2181==i))};
677
end
678
679
figure
680
b = bar(categorical(anot_names),cell2mat(comp_table2(:,2:3)));
681
xtips1 = b(1).XEndPoints;
682
ytips1 = b(1).YEndPoints;
683
labels1 = string(b(1).YData);
684
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
685
    'VerticalAlignment','bottom')
686
xtips2 = b(2).XEndPoints;
687
ytips2 = b(2).YEndPoints;
688
labels2 = string(b(2).YData);
689
text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...
690
    'VerticalAlignment','bottom')
691
title('2181 Volume');
692
693
694
695
anot_1163 = imread('/Volumes/Hera/Prostate_Data/1163/Hist/7/Olympus/large_recon_8_ANOT.tif');
696
anot_1163= anot_1163(:,:,1:3);
697
whole_image1163 = imread('/Volumes/Hera/Prostate_Data/1163/Hist/7/Olympus/large_recon_8_nowhite.tiff');
698
699
[Seminal_Vesicles,Atrophy,HGPIN,G3,G4FG,G4CG,G5,tissue_mask] = color_thresh_masks(anot_1163,whole_image1163,0,0);
700
701
% % % All Annotation Classes
702
% ken2181 = Atrophy + 2*Seminal_Vesicles + 3*HGPIN + 4*tissue_mask + 5*G3 + 6*G4CG + 7*G4FG + 8*G5;
703
% ken2181(find(ken2181==0)) = numel(anot_names);
704
% figure(); imagesc(ken2181); colormap(map)
705
    
706
% Normal vs Cancer
707
ken1163 = (Atrophy+HGPIN+Seminal_Vesicles+tissue_mask) + 2*G3 + 3*G4CG + 4*G4FG + 5*G5;
708
ken1163(find(ken1163==0)) = numel(anot_names);
709
% figure(); imagesc(ken2181); colormap(map);
710
711
atari_1163 = imresize(ken1163,size(wm1163),'nearest');
712
% figure(); imagesc(atari_2181); colormap(map)
713
714
wm1163(find(atari_1163 == numel(anot_names))) = numel(anot_names);
715
atari_1163(find(wm1163 == numel(anot_names))) = numel(anot_names);
716
figure(); 
717
subplot(121); imagesc(wm1163); colormap(map); title('classifier'); axis image
718
subplot(122); imagesc(atari_1163); colormap(map); title('ken'); axis image
719
720
for i = 1:numel(anot_names)
721
    comp_table2(i,1) = {anot_names{i}};
722
    comp_table2(i,2) = {numel(find(atari_2181 == i))}; % Ken volume
723
    comp_table2(i,3) = {numel(find(wm2181 == i))}; % Classifier volume
724
    comp_table2(i,4) = {dice((atari_2181==i),(wm2181==i))};
725
end
726
727
figure
728
b = bar(categorical(anot_names),cell2mat(comp_table2(:,2:3)));
729
xtips1 = b(1).XEndPoints;
730
ytips1 = b(1).YEndPoints;
731
labels1 = string(b(1).YData);
732
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
733
    'VerticalAlignment','bottom')
734
xtips2 = b(2).XEndPoints;
735
ytips2 = b(2).YEndPoints;
736
labels2 = string(b(2).YData);
737
text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...
738
    'VerticalAlignment','bottom')
739
title('2181 Volume');