rendered paste bodyfunction [cbr,totalconfusion, totalprecision, totalrecall] = casebased(s)
[x,y] = loaddata(s);
% Initialisation
totale = 0;
totalconfusion = {};
totalrecall = {};
totalprecision = {};
% Loop for cross-fold validation
for j = 0:9
% Data Split
[testdata,traindata] = splitData(x,j);
[testlabel,trainlabel] = splitData(y,j);
% Initialise Training Set
cbr = CBRinit(traindata,trainlabel);
% Initialise Confusion matrix
for i = 1:6
for k = 1:6
confusion(i,k) = 0;
end;
end;
% Loop for each new test case
for i = 1:size(testdata)
% Initialise case
newcase.problem = testdata(i,:);
newcase.solution = 0;
% retrieve, reuse, retain
foundcase = retrieve(cbr,newcase);
solvedcase = reuse(foundcase,newcase);
cbr = retain(cbr,solvedcase);
% Calcultaes total error
if testlabel(i) ~= solvedcase.solution
totale = totale+1;
end;
% Confusion matrix
confusion(testlabel(i,1),solvedcase.solution) = confusion(testlabel(i,1),solvedcase.solution) + 1;
end;
% Recall and Precision rates calculations
for i = 1:6
if sum(confusion(i,:)) == 0
recall(i) = 100;
else
recall(i) = confusion(i,i) / sum(confusion(i,:)) * 100;
end;
if sum(confusion(:,i)) == 0
precision(i) = 100;
else
precision(i) = confusion(i,i) / sum(confusion(:,i)) * 100;
end;
end;
totalconfusion{j+1} = confusion;
totalrecall{j+1} = recall;
totalprecision{j+1} = precision;
end;
totale
function [ cbr ] = CBRinit( x,y )
% Initialises cases
%cbr = []
for i = 1:size(x,1)
% found = 0;
% if size(cbr,2) ~= 0
% for j = 1:size(cbr,2)
% if (cbr(1,j).problem == x(i,:) )
% if (cbr(1,j).solution == y(i))
% found = 1;
% end;
% end;
% end;
% end;
% if found == 0
cbr(i).problem = x(i,:);
cbr(i).solution = y(i);
cbr(i).typicality = 0;
% end;
end;