function [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;