function errorCount=main() errorCount=0;%Number of errors made by client program, these are basic sanity checks and no guarantee that code is correct %Test partitioning x=[1 0; 2 0; 3 0; 4 0; 5 1; 6 1; 7 1; 8 1]; p=partition(x,[2 2 2 2]); [r c]=size(p); errorCount=errorCount+(c~=4);%Should receive 4 partitions getFractions(x,[0 1]); f=getFractions(p{1},[0 1]); errorCount=errorCount+(f(1)~=0.5);%partition should be stratified %Test cross validation N=1000; %1000 data points d=7; % 6 input dimensions, one class value a=rand(N,d); a(:,d)=round(a(:,d)); %0 or 1 class value crossValidationLosses=crossValidate(a,[@buildKNNModel @buildKNNModel @buildKNNModel @buildMyModel],[1 2 3 4],10); [r numCrossValidationScores]=size(crossValidationLosses); errorCount=errorCount+(numCrossValidationScores~=4);% Should receive one score per algorithm function [data, functionHandle]=buildMyModel(trainSet,hyperparameters) data=3; functionHandle=@evalMyModel; function classifications=evalMyModel(data,trainPts) [N inputDim]=size(trainPts); classifications=zeros(1,N); function fractions=getFractions(fullDataset,classes) [rows numClasses]=size(classes); for index=1:numClasses fractions(index)=getFraction(fullDataset,classes(index)); end function fraction=getFraction(fullDataset,class) [N d]=size(fullDataset); count=0; for index=1:N if (fullDataset(index,d)==class) count=count+1; end end fraction=count/N;