numFeatures = 6; numTrain = 10; numTest = 20; classPriors = [0.5 0.5]; zipfParam = .1; % the bigger this is the more separable the classes are. for ii =1:numTrain [f1 f2] = simZipf(numFeatures, zipfParam); if(rand < classPriors(1)) db(ii,1:numFeatures) = f1; db(ii,numFeatures+1) = 1; else db(ii,1:numFeatures) = f2; db(ii, numFeatures+1) = 2; end end for jj =1:numTest [f1 f2] = simZipf(numFeatures, zipfParam); if(rand < classPriors(1)) testMat(jj,1:numFeatures) = f1; testMat(jj,numFeatures+1) = 1; else testMat(jj,1:numFeatures) = f2 testMat(jj, numFeatures+1) = 2; end end % Call Classifiers centroidParamClassVect = calcCentroidalParametricClass(testMat(:,1:numFeatures), db, classPriors); for i=1:numTest oneNNclassVect(i) = simplekNN(testMat(i,1:numFeatures), db, 1); twoNNclassVect(i) = simplekNN(testMat(i,1:numFeatures), db, 2); threeNNclassVect(i) = simplekNN(testMat(i,1:numFeatures), db, 3); db1 = db(find(db(:, numFeatures+1)==1),:); db2 = db(find(db(:, numFeatures+1)==2),:); centroidClassVect(i) = centroid(testMat(i,1:numFeatures), db1(:, 1:numFeatures), db2(:, 1:numFeatures)); AvgcentroidClassVect(i) = Avgcentroid(testMat(i,1:numFeatures), db1(:,1:numFeatures), db2(:,1:numFeatures)); end testClass = testMat(:, numFeatures+1); % Calculate error oneNNError = sum(abs(testClass' - oneNNclassVect)); twoNNError = sum(abs(testClass' - twoNNclassVect)); threeNNError = sum(abs(testClass' - threeNNclassVect)); centroidClassError = sum(abs(testClass' - centroidClassVect)); AvgcentroidClassError = sum(abs(testClass' - AvgcentroidClassVect)); centroidParamClassError = sum(abs(testClass' - centroidParamClassVect)); oneNNError twoNNError threeNNError centroidClassError AvgcentroidClassError centroidParamClassError