101 lines
3.0 KiB
Matlab
101 lines
3.0 KiB
Matlab
clear
|
|
|
|
%% Path info
|
|
Dataset = 'NCLT';
|
|
Method = 'SCI';
|
|
% ResultsDir = strcat('Result/', Dataset, '/', Method, '/');
|
|
|
|
ResultsDir = 'Result/';
|
|
|
|
%% Params
|
|
FigIdx = 1;
|
|
figure(FigIdx); clf;
|
|
|
|
TopNindexes = [25];
|
|
nTopNindexes = length(TopNindexes);
|
|
|
|
%% Main
|
|
SequenceNames = dir(ResultsDir); SequenceNames(1:2, :) = []; SequenceNames = {SequenceNames(:).name};
|
|
nSequences = length(SequenceNames);
|
|
|
|
for ithTopN = 1:nTopNindexes
|
|
|
|
TopNidx = TopNindexes(ithTopN);
|
|
|
|
for ithSeq = 1:nSequences
|
|
|
|
% seq info
|
|
ithSeqName = SequenceNames{ithSeq};
|
|
ithSeqPath = strcat(ResultsDir, ithSeqName, '/');
|
|
ithSeqPRcurveData = dir(ithSeqPath); ithSeqPRcurveData(1:2, :) = []; ithSeqPRcurveData = {ithSeqPRcurveData(:).name};
|
|
|
|
% load
|
|
nCorrectRejectionsAll = load(strcat(ithSeqPath, ithSeqPRcurveData{1}));
|
|
nCorrectRejectionsAll = nCorrectRejectionsAll.nCorrectRejections;
|
|
nCorrectRejectionsForThisTopN = nCorrectRejectionsAll(TopNidx, :);
|
|
|
|
nFalseAlarmsAll = load(strcat(ithSeqPath, ithSeqPRcurveData{2}));
|
|
nFalseAlarmsAll = nFalseAlarmsAll.nFalseAlarms;
|
|
nFalseAlarmsForThisTopN = nFalseAlarmsAll(TopNidx, :);
|
|
|
|
nHitsAll = load(strcat(ithSeqPath, ithSeqPRcurveData{3}));
|
|
nHitsAll = nHitsAll.nHits;
|
|
nHitsForThisTopN = nHitsAll(TopNidx, :);
|
|
|
|
nMissesAll = load(strcat(ithSeqPath, ithSeqPRcurveData{4}));
|
|
nMissesAll = nMissesAll.nMisses;
|
|
nMissesForThisTopN = nMissesAll(TopNidx, :);
|
|
|
|
% info
|
|
nTopNs = size(nCorrectRejectionsAll, 1);
|
|
nThres = size(nCorrectRejectionsAll, 2);
|
|
|
|
% main
|
|
Precisions = [];
|
|
Recalls = [];
|
|
Accuracies = [];
|
|
for ithThres = 1:nThres
|
|
nCorrectRejections = nCorrectRejectionsForThisTopN(ithThres);
|
|
nFalseAlarms = nFalseAlarmsForThisTopN(ithThres);
|
|
nHits = nHitsForThisTopN(ithThres);
|
|
nMisses = nMissesForThisTopN(ithThres);
|
|
|
|
nTotalTestPlaces = nCorrectRejections + nFalseAlarms + nHits + nMisses;
|
|
|
|
Precision = nHits / (nHits + nFalseAlarms);
|
|
Recall = nHits / (nHits + nMisses);
|
|
Acc = (nHits + nCorrectRejections)/nTotalTestPlaces;
|
|
|
|
Precisions = [Precisions; Precision];
|
|
Recalls = [Recalls; Recall];
|
|
Accuracies = [Accuracies; Acc];
|
|
end
|
|
|
|
% draw
|
|
figure(FigIdx);
|
|
plot(Recalls, Precisions, 'LineWidth', 2); % commonly x axis is recall
|
|
title('SCI at NCLT');
|
|
xlabel('Recall'); ylabel('Precision');
|
|
% axis equal;
|
|
xlim([0, 1]); ylim([0,1]);
|
|
grid on; grid minor;
|
|
hold on;
|
|
|
|
end
|
|
|
|
lgd = legend(SequenceNames, 'Location', 'best');
|
|
lgd.FontSize = 9;
|
|
lgd.FontWeight = 'bold';
|
|
|
|
|
|
%% save
|
|
% fileName = strcat('./results/', testDate, '_PRcurveWithEntropyThresVarying.png');
|
|
% saveas(gcf, fileName)
|
|
%
|
|
% fileName = strcat('./results/', testDate, '_EntireWorkSpace.mat');
|
|
% save(fileName)
|
|
|
|
end
|
|
|
|
|