% moving to runDiffFeatures simulation %numFeatures = 10; numTrain = 10; numTest = 100; classPriors = [0.5 0.5]; okData = 0; while okData == 0 num1 = 0; num2 = 0; for i = 1:numTrain [f1 f2] = sim1overN(numFeatures); % [f1 f2] = simMutuallyExclusive(numFeatures, 0.9); randNumber = rand; if( randNumber < classPriors(1) ) trainMat(i,1:numFeatures) = f1; trainMat(i,numFeatures+1) = 1; num1 = num1 + 1; else trainMat(i,1:numFeatures) = f2; trainMat(i, numFeatures+1) = 2; num2 = num2 + 1; end end if(num1 == 0 || num2 == 0) okData = 0; disp('picked all training data from one class only'); else okData = 1; end end for i =1:numTest [f1 f2] = sim1overN(numFeatures); % [f1 f2] = simMutuallyExclusive(numFeatures, 0.9); if(rand < classPriors(1)) testMat(i,1:numFeatures) = f1; testMat(i,numFeatures+1) = 1; else testMat(i,1:numFeatures) = f2; testMat(i, numFeatures+1) = 2; end end % Call Classifiers %centroidParamClassVect = calcCentroidalParametricClass(testMat(:,1:numFeatures), trainMat, classPriors); centroidParamClassVect = calcCentroidalParametricClassX(testMat(:,1:numFeatures), trainMat, classPriors); for i=1:numTest oneNNclassVect(i) = simplekNN(testMat(i,1:numFeatures), trainMat, 1); threeNNclassVect(i) = simplekNN(testMat(i,1:numFeatures), trainMat, 3); fiveNNclassVect(i) = simplekNN(testMat(i,1:numFeatures), trainMat, 5); trainMat1 = trainMat(find(trainMat(:, numFeatures+1)==1),1:numFeatures); trainMat2 = trainMat(find(trainMat(:, numFeatures+1)==2),1:numFeatures); centroidClassVect(i) = centroid(testMat(i,1:numFeatures), trainMat1, trainMat2); AvgcentroidClassVect(i) = Avgcentroid(testMat(i,1:numFeatures), trainMat1(:,1:numFeatures), trainMat2(:,1:numFeatures)); end testClass = testMat(:, numFeatures+1); % Calculate error oneNNError = sum(abs(testClass' - oneNNclassVect)); threeNNError = sum(abs(testClass' - threeNNclassVect)); fiveNNError = sum(abs(testClass' - fiveNNclassVect)); centroidClassError = sum(abs(testClass' - centroidClassVect)); AvgcentroidClassError = sum(abs(testClass' - AvgcentroidClassVect)); centroidParamClassError = sum(abs(testClass' - centroidParamClassVect)); % oneNNError % threeNNError % fiveNNError % centroidClassError % AvgcentroidClassError % centroidParamClassError