%RFISHERCC Random fisher classifier combiner % % W = RFISHERCC(A,N) % W = A*RFISHERCC(N) % % INPUT % A prdataset to be used for training, M objects, C classes % N number of base classifiers to be generated % default: M/(10*(C-1)) % % OUTPUT % W trained classifier % % DESCRIPTION % This routine generates a a random set of N simple classifiers, based on % the 1-NN rule using a single, randomly selected object per class. The % confindences (shee KNNC) for the total training set A (in total N*(C-1) % per object) are used to train a combiner using FISHERC. % % EXAMPLES % a = gendatb; % figure; scatterd(a); % plotc(a*rfishercc) % % a = gendatm; % figure; scatterd(a); % plotc(a*rfishercc(2),'col') % % a = setprior(sonar,0); % make priors equal % w1 = setname(rfishercc(10),'RFisher-10'); % w2 = setname(rfishercc(20),'RFisher-20'); % w3 = setname(rfishercc(40),'RFisher-40'); % randreset(1); % for reproducability % e = cleval(a,{w1,w2,w3},[5,10,20,40,80],10); % plote(e); % % SEE ALSO(PRTools Guide) % MAPPINGS, DATASETS, KNNC, FISHERC % Copyright: R.P.W. Duin, r.p.w.duin@37steps.com function w = rfishercc(varargin) argin = shiftargin(varargin,'scalar'); argin = setdefaults(argin,[],[]); if mapping_task(argin,'definition') w = define_mapping(argin,'untrained'); elseif mapping_task(argin,'training') [a,n] = deal(argin{:}); isdataset(a); islabtype(a,'crisp'); [m,k,c] = getsize(a); % default number of classifiers, <= 500 if isempty(n) n = min(ceil(m/(10*(c-1))),500); end u = a*repmat({gendat([],ones(1,c))*knnc([],1)},1,n); u = u*featsel(1:c-1); w = a*(stacked(u)*fisherc); else error('Wrong input') end