[696a78]: / deep_learning_multiscale_lstm_fig2.m

Download this file

98 lines (89 with data), 3.7 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
%% plot performance curves of individual cpc groups
clear
time_step = 6;
time_range = 12:time_step:96;
neuron_num_short = 30:10:100;
neuron_num_long = 30:10:40;
load(['RF_clinical_regardless_time']);
prob_pts_clinical = prob_pts;
a = mean(prob_pts_clinical');
prob_pts_clinical = repmat(a',1,length(time_range));
load(['\long_limitSeq_8_bilstm_two_neurons_',num2str(neuron_num_long(2)),'_epoch_30.mat']);
prob_pts_long = prob_pts;
load(['\short_bilstm_two_neurons_',num2str(neuron_num_short(3)),'_epoch_15.mat']);
prob_pts_short = prob_pts;
prob_pts = (prob_pts_clinical+prob_pts_long+prob_pts_short)/3;
pred_prob_all = nan(size(prob_pts));
for i = 1:size(pred_prob_all,1)
for j = 1:size(pred_prob_all,2)
if ~isnan(prob_pts(i,j))
pred_prob_all(i,j) = nanmean(prob_pts(i,1:j));
end
end
end
labels = nanmean(label_pts');
num_pts = length(labels);
index_tmp = find(labels==2);
feature_good = pred_prob_all(labels==2,:);
feature_mean = nanmean(feature_good');
[a,index_good] = sort(feature_mean);
index_good = index_tmp(index_good);
feature_good = pred_prob_all(index_good,:);
unique_names_good = unique_names(index_good);
index_tmp = find(labels==1);
feature_bad = pred_prob_all(labels==1,:);
feature_mean = nanmean(feature_bad');
[a,index_bad]=sort(feature_mean);
index_bad = index_tmp(index_bad);
feature_bad = pred_prob_all(index_bad,:);
unique_names_bad = unique_names(index_bad);
unique_names1 = [unique_names_good;unique_names_bad];
feature_all1 = [feature_good;feature_bad];
figure,
% mn = prctile(feature_all1(:),0); mx = prctile(feature_all1(:),100);% 90
imagesc(feature_all1(:,1:11));
colormap(flipud(cold));
% set(gca, 'YTick', 371, 'YTickLabel', 'poor')
xlabel('Hours After Cardiac Arrest');
title('Outcome Prediction Probability over Time');
colorbar;
set(gca, 'Xtick',1:11,'Xticklabel',num2cell(time_range(1:11)))
% set(gca, 'YTick', (1/num_pts:1/num_pts:1)*num_pts, 'YTickLabel', unique_names1)
load('\all_features.mat','cpc_scores','unique_names');
cpc_labels = zeros(size(labels));
for i = 1:length(labels)
indx = ~cellfun(@isempty, strfind(unique_names,unique_names1{i}));
indx = find(indx==1);
indx = indx(1);
cpc_labels(i) = cpc_scores(indx);
end
figure,
tmp = feature_all1(cpc_labels==1,1:11);
[h1,p] = boundedline(1:11, nanmean(tmp), nanstd(tmp)./sum(~isnan(tmp)),'-ro','alpha');% --b* --ro --g+ --cs
% h1 = outlinebounds(l,p);
hold on,
tmp = feature_all1(cpc_labels==2,1:11);
[h2,p] = boundedline(1:11, nanmean(tmp), nanstd(tmp)./sum(~isnan(tmp)),'-b*','alpha');% --b* --ro --g+ --cs
% h2 = outlinebounds(l,p);
hold on,
tmp = feature_all1(cpc_labels==3,1:11);
[h3,p] = boundedline(1:11, nanmean(tmp), nanstd(tmp)./sum(~isnan(tmp)),'-g+','alpha');% --b* --ro --g+ --cs
% h3 = outlinebounds(l,p);
hold on,
tmp = feature_all1(cpc_labels==4,1:11);
if ~isempty(find(sum(~isnan(tmp))==1))
tmp(:,find(sum(~isnan(tmp))==1)) = nan;
end
[h4,p] = boundedline(1:11, nanmean(tmp), nanstd(tmp)./sum(~isnan(tmp)),'-cs','alpha');% --b* --ro --g+ --cs --md
% h4 = outlinebounds(l,p);
hold on,
tmp = feature_all1(cpc_labels==5,1:11);
[h5,p] = boundedline(1:11, nanmean(tmp), nanstd(tmp)./sum(~isnan(tmp)),'-k^','alpha');% --b* --ro --g+ --cs
% h5 = outlinebounds(l,p);
set(gca, 'XTick', 1:length(time_range(1:11)), 'XTickLabel', strsplit(num2str(time_range(1:11))));
xlabel('Hours After Cardiac Arrest');
ylabel('Mean Outcome Prediction Probability');
xlim([0 12]);
title('Mean Outcome Prediction Probability at Different Time Intervals')
legend([h5,h4,h3,h2,h1],'CPC =5','CPC = 4','CPC = 3','CPC = 2','CPC = 1');
legend boxoff