Skip to content
Snippets Groups Projects
Commit 228b5631 authored by ac_fx's avatar ac_fx
Browse files

big doings

getK - fix cardinality at 5 (was variable on [4:7])

supervised subfolder -- map OD to K
parent c4b3bafb
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,7 @@ for k=1:kMax
for ik=1:k
idx=find(idxsp==ik);
for ntrial=1:NUMBER_OF_SAMPLES
trialCardinality=4+mod(ntrial,4);
trialCardinality=5; %4+mod(ntrial,4);
trialCardinality=min(length(idx),trialCardinality);
idxTrials{ntrial}=[idxTrials{ntrial};idx(randperm(length(idx),trialCardinality))];
idxKey{ntrial}=[idxKey{ntrial};repmat(ik,trialCardinality,1)];
......
function Mdl = getEnsemble(xTraining,yTraining)
function [Mdl,cm] = getEnsemble(xTraining,yTraining)
% Mdl = fitcensemble(xTraining,yTraining,'method','subspace','learner','knn');
% Mdl = fitcensemble(xTraining,yTraining);
t = templateTree('MaxNumSplits',12);
Mdl = fitcensemble(xTraining,yTraining,'Method','AdaBoostM2','Learners',t);
% t = templateTree('MaxNumSplits',5);
% Mdl = fitcensemble(xTraining,yTraining,'Method','AdaBoostM2','Learners',t);
Mdl = fitcensemble(xTraining,yTraining);
% Mdl = fitcensemble(xTraining,yTraining,'Method','subspace','Learners','knn');
yPred=predict(Mdl,xTraining);
cm=zeros(10);
for i=1:length(yPred)
cm(yTraining(i),yPred(i))=cm(yTraining(i),yPred(i))+1;
end
cm
sum(diag(cm))/length(yPred)
\ No newline at end of file
cm;
sum(diag(cm))/length(yPred);
4;
\ No newline at end of file
function [net,cm]=getNetwork(xTraining,yTraining)
net=patternnet([12,6],'trainbr');
net=patternnet([10],'trainscg');
yResponse=zeros(10,size(xTraining,2));
for i=1:size(xTraining,2)
yResponse(yTraining(i),i)=1;
......@@ -8,7 +8,7 @@ end
% net.trainParam.showWindow = false;
% net.performFcn='sse'; % for trainlm
net = train(net,xTraining,yResponse,'useParallel','yes');
net = train(net,xTraining,yResponse);
yPred = net(xTraining);
% length(find(yTraining==round(yPred)))/length(yPred)
......@@ -17,6 +17,6 @@ cm=zeros(10);
for i=1:length(yPredActual)
cm(yTraining(i),yPredActual(i))=cm(yTraining(i),yPredActual(i))+1;
end
cm
sum(diag(cm))/length(yPredActual)
cm;
sum(diag(cm))/length(yPredActual);
4;
path(path,'..');
load('digitsTrainingInc.mat');
A=load('digitsTrainingInc_30.mat');
xTraining=[xTraining',A.xTraining'];
yTraining=[yTraining',A.yTraining'];
load('digitsTraining2k10.mat');
[net]=getNetwork(xTraining,yTraining);
NUMBER_OF_TRIALS=100;
......
path(path,'..');
load('digitsTraining2k.mat');
Mdl = getEnsemble(xTraining,yTraining);
[net]=getNetwork(xTraining',yTraining');
% load('digitsTraining2k10.mat');
load('digitsTraining_1ksamples_5cardinality_10digits.mat')
p=startParallel(256);
[Mdl,kConfusionEnsTraining] = getEnsemble(xTraining,yTraining);
kConfusionEnsTraining
sum(diag(kConfusionEnsTraining))/sum(kConfusionEnsTraining(:))
[net,kConfusionNNtraining]=getNetwork(xTraining',yTraining');
kConfusionNNtraining
sum(diag(kConfusionNNtraining))/sum(kConfusionNNtraining(:))
NUMBER_OF_TRIALS=100;
NUMBER_OF_SUPER=10; % supersampling
kConfusionEns=zeros(10);
kConfusionNN=zeros(10);
for nTrial=1:NUMBER_OF_TRIALS
for d=1:NDIGITS
yTestNN=[];
yTestEns=[];
score=[];
for s=1:NUMBER_OF_SUPER
target=[0:maxDigits(d)];
K=length(target);
cardinality=ceil(targetSize/length(target));
xDigits=getNISTdigits(target,cardinality);
[kpred,mx,sd,clusterConfusion]=getK(xDigits,kMax,NUMBER_OF_SAMPLES,clusterConfusion);
xTest=[mx',sd'];
% predict with ensemble
yTestEns=predict(Mdl,xTest);
kConfusionEns(K,yTestEns)=kConfusionEns(K,yTestEns)+1
yTestNN=net(xTest');
[~,yTestActual]=max(yTestNN);
kConfusionNN(K,yTestActual)=kConfusionNN(K,yTestActual)+1
accEnsNN=[sum(diag(kConfusionEns))/sum(kConfusionEns(:)),sum(diag(kConfusionNN))/sum(kConfusionNN(:))]
5;
% predict with nn (confidences)
yTestNN(:,s)=net(xTest');
yConfidence=sort(sum(yTestNN,2),'descend');
confidence=yConfidence(1)/yConfidence(2);
if confidence > 10 || (s>5 && confidence>2)
break;
end
end
[~,yTestActual]=max(sum(yTestNN,2));
kConfusionNN(K,yTestActual)=kConfusionNN(K,yTestActual)+1;
kConfusionEns(K,yTestEns)=kConfusionEns(K,yTestEns)+1;
accTotal=sum(diag(kConfusionNN))/sum(kConfusionNN(:));
fprintf(1,'N=%d K=%d nSamples=%d correct=%d accTotal=%d confidence=%0.1f\n',nTrial,K, s, yTestActual==K,accTotal,confidence)
end
end
......
path(path,'..');
maxDigits=[0,1,2,3,8,9];
maxDigits=[0:9];
targetSize=100;
rgResults=[]; % maxDigit,trial,iteration
kMax=12;
NUMBER_OF_SAMPLES=2000;
kMax=10;
NUMBER_OF_SAMPLES=1000;
NUMBER_OF_TRIALS=1000;
p=startParallel(256);
outfile='digitsTraining2k.mat';
outfile='digitsTraining_1ksamples_5cardinality_10digits.mat';
outname=['getK5k' datestr(now,'mm-dd-yyyy') '.mat']
NDIGITS=length(maxDigits);
kConfusion=zeros(10,kMax);
xTraining=[];
......
nov 14 100 training vectors (OD curves) -> 65-72% correct for all digit sets [0..K\in[0,9]] classes
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment