- Files:
-
- 9 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
/distools/clevald.m
r30 r20 248 248 J = JR(1:nj); 249 249 if isempty(repsize) 250 R = J ;250 R = JR; 251 251 elseif repsize < 1 252 252 R = JR(1:ceil(repsize*nj)); -
/distools/genddat.m
r30 r20 60 60 function [DTR,DTE,Itr,Ite] = genddat(D,m,k); 61 61 62 if nargin < 3, k = []; end63 64 % If input is a cell array of datasets, apply this procedure65 % to the individual datasets.66 if (iscell(D))67 A = cell(size(D));68 B = cell(size(D));69 IA = cell(size(D));70 IB = cell(size(D));71 seed = randreset;72 for j=1:length(D(:))73 randreset(seed);74 [DTR{j},DTE{j},Itr{j},Ite{j}] = feval(mfilename,D{j},m,k);75 end76 return;77 end78 79 80 81 62 [n,nk,c] = getsize(D); 82 63 nlab = getnlab(D); 83 64 discheck(D,[],1); % allow for similarities 84 65 85 if ~isempty(k) 66 if nargin < 3, 67 k = []; 68 else 86 69 if length(k) == 1 87 70 k = k*ones(1,c); -
/distools/pe_em.m
r30 r20 39 39 % ALF of the total variance is preserved for ALF in (0,1). The resulting X is found 40 40 % by D*W. The signature of the obtained PE space (numbers of positive and negative 41 % directions) can be found by GETDATA(W,'sig'). The spectrum of the obtained space42 % can be found by GETDAT(W,'eval').41 % directions) can be found by PE_SIG(W). The spectrum of the obtained space 42 % can be found by PE_SPEC(W). 43 43 % 44 44 % SEE ALSO 45 % MAPPINGS, DATASETS, AUGPSEM, PCA, GETSIG, SETSIG45 % MAPPINGS, DATASETS, AUGPSEM, PCA, PE_PCA, PE_SPEC, GETSIG, SETSIG 46 46 % 47 47 % LITERATURE -
/distools/protselfd.m
r30 r20 5 5 % 6 6 % INPUT 7 % D Dataset, dissimilarity matrix7 % D Dataset, square dissimilarity matrix 8 8 % K Integer, desired number of prototypes 9 % PAR 'SUPER' supervised selection using 1NN error on prototypes. 10 % 'LOO' - supervised selection using leave-one-out error estimation. 11 % 'MAXDIST' - unsupervised selection minimizing the maximum 12 % distance to the nearest prototype. 13 % 'MEANDIST' - unsupervised selection minimizing the average 14 % distance to the nearest prototype. 9 % PAR 'LOO' - leave-one-out option. This should be used if 10 % the objects are related to themselves. If D is not square, 11 % it is assumed that the first sets of objects in columns and 12 % rows match. 13 % 'ALL' - use all objects (default). 15 14 % 16 15 % OUTPUT 17 16 % W Selection mapping ('feature selection') 18 17 % E Error stimate as a function of number of selected prototypes 19 % (for supervised selection only reliable for prototype sizes >= class size) 20 % KOPT Estimate for best size in avoiding peaking 21 % (supervised selection only) 18 % (only reliable for prototype sizes >= class size) 19 % KOPT Estimate for best size in avoiding peaking 22 20 % 23 21 % DESCRIPTION 24 % This procedure for optimizing the representation set of a dissimilarity 25 % matrix is based on a greedy, forward selection of prototypes. 22 % This procedure for optimizing the representation set of a 23 % dissimilarity matrix is based on a greedy, forward selection of 24 % prototypes using the leave-one-out error estimate of the 1NN rule 25 % as a criterion. As this is computed on the given distances in 26 % D, the procedure is based on sorting and counting only and is 27 % thereby fast. In case K=1 just a single prototype has to be returned, 28 % but computing the 1NN error is not possible as all objects are assigned 29 % to the same class. In that case the centre object of the largest class 30 % will be returned. 26 31 % 27 % In case of supervised selection D should be a labeled dataset with 28 % prototype labels stored as feature labels. The 1NN error to the nearest 29 % prototype is used as a criterion. In case of leave-one-out error 30 % estimation it is assumed that the first objects in D correspond with the 31 % prototypes. 32 % 33 % In case K=1 just a single prototype has to be returned, but computing the 34 % 1NN error is not possible as all objects are assigned to the same class. 35 % In that case the centre object of the largest class will be returned. 32 % Note that the search continues untill K prototypes are found. 33 % This might be larger than desired due to peaking (curse of 34 % dimensionality, overtraining). Therefor an estimate for the 35 % optimal number of prototype is returned in KOPT. 36 36 % 37 % Note that the search continues untill K prototypes are found. This might 38 % be larger than desired due to peaking (overtraining). Therefor an 39 % estimate for the optimal number of prototype is returned in KOPT. 40 % 41 % The prototype selection may be applied by C = B*W(:,1:KSEL), in which B 42 % is a dissimilarity matrix based on the same representation set as A (e.g. 43 % A itself) and C is a resulting dissimilarity matrix in which the KSEL 44 % (e.g. KOPT) best prototypes are selected. 45 % 46 % In case of unsupervised selection the maximum or the mean distances to 47 % the nearest prototype are minimized. These criteria are the same as used 48 % in the KCENTRE and KMEDIOD cluster procedures. 37 % The prototype selection may be applied by C = B*W(:,1:KSEL), 38 % in which B is a dissimilarity matrix based on the same 39 % representation set as A (e.g. A itself) and C is a resulting 40 % dissimilarity matrix in which the KSEL (e.g. KOPT) best prototypes 41 % are selected. 49 42 % 50 43 % REFERENCE … … 62 55 % 63 56 64 function [R,e,D ] = protselfd(D,ksel,type)57 function [R,e,D,J,nlab,clab] = protselfd(D,ksel,par,J,e,nlab,clab) 65 58 66 67 if nargin < 3, type = []; end59 if nargin < 2, ksel = []; end 60 if nargin < 3 | isempty(par), par = 'all'; end 68 61 69 if nargin < 1 || isempty(D) % allow for D*protselfd([],pars) 70 R = mapping(mfilename,'untrained',{ksel,type}); 62 if nargin < 4 % user call 63 64 if nargin < 1 | isempty(D) % allow for D*protselfd([],pars) 65 R = mapping(mfilename,'untrained',{ksel,par}); 71 66 R = setname(R,'Forward Prototype Sel'); 72 67 return 73 68 end 74 69 75 switch lower(type)76 case {'loo','LOO','super','SUPER','',''}77 [R,e,D,J,nlab,clab] = protselfd(D,ksel,type);78 case {'maxdist','meandist'}79 R = protselfd_unsuper(D,ksel,type);80 otherwise81 error('Unknown selection type')82 end83 84 return85 86 87 function [R,e,D,J,nlab,clab] = protselfd_super_init(D,ksel,par)88 % this routine takes care of the initialisation of supervised selection89 90 isdataset(D);91 70 [m,k,c] = getsize(D); 92 71 if isempty(ksel), ksel = k; end … … 120 99 % this will be a deep recursive call !!! 121 100 prwaitbar(ksel,'Forward prototype selection') 122 [R,e,D,J,nlab,clab] = protselfd _super(D,ksel,R,J,e,nlab,clab);101 [R,e,D,J,nlab,clab] = protselfd(D,ksel,R,J,e,nlab,clab); 123 102 prwaitbar(0); 124 103 end … … 131 110 D = floor((Jopt(end)+Jopt(1))/2); 132 111 133 return 112 % done! 134 113 135 function [R,e,D,J,nlab,clab] = protselfd_super(D,ksel,R,J,e,nlab,clab) 136 114 else % internal call, parameters may have another meaning! 115 116 R = par; % prototypes sofar 137 117 [m,k,c] = getsize(D); 138 118 d = +D; … … 155 135 de = sum(ds); 156 136 % if better, use it 157 if ee < emin | | ((ee == emin) && (de < dmin))137 if ee < emin | ((ee == emin) & (de < dmin)) 158 138 emin = ee; 159 139 jmin = j; … … 165 145 end 166 146 167 if emin <= e(r) | |1 % we even continue if emin increases due to peaking147 if emin <= e(r) | 1 % we even continue if emin increases due to peaking 168 148 e(r+1) = emin; 169 149 R = Rmin; 170 150 if (r+1) < ksel 171 [R,e,D,J,nlab,clab] = protselfd _super(D,ksel,R,Jmin,e,nlab,clab);151 [R,e,D,J,nlab,clab] = protselfd(D,ksel,R,Jmin,e,nlab,clab); 172 152 end 173 153 end 174 154 175 return176 177 %PROTSELFD_UNSUPER Forward prototype selection178 %179 % N = PROTSELFD_UNSUPER(D,P,CRIT)180 %181 % INPUT182 % D Square dissimilarity matrix, zeros on diagonal183 % P Number of prototypes to be selected184 % CRIT 'dist' or 'centre'185 %186 % OUTPUT187 % N Indices of selected prototypes188 %189 % DESCRIPTION190 % Sort objects given by square dissim matrix D using a greedy approach191 % such that the maximum NN distance from all objects (prototypes)192 % to the first K: max(min(D(:,N(1:K),[],2)) is minimized.193 %194 % This routines tries to sample the objects such that they are evenly195 % spaced judged from their dissimilarities. This may be used as196 % initialisation in KCENTRES. It works reasonably, but not very good.197 %198 % SEE ALSO199 % KCENTRES200 201 % Copyright: R.P.W. Duin, r.p.w.duin@prtools.org202 % Faculty EWI, Delft University of Technology203 % P.O. Box 5031, 2600 GA Delft, The Netherlands204 205 function N = protselfd_unsuper(d,p,crit)206 207 d = +d;208 [m,k] = size(d);209 if isempty(crit), crit = 'max'; end210 if nargin < 2 || isempty(p), p = k; end211 L = 1:k;212 N = zeros(1,p);213 switch crit214 case 'maxdist'215 [~,n] = min(max(d)); % this is the first (central) prototype216 case 'meandist'217 [~,n] = min(mean(d)); % this is the first (central) prototype218 155 end 219 e = d(:,n); % store here the distances to the nearest prototype (dNNP)220 f = min(d,repmat(e,1,k)); % replace distances that are larger than dNNP by dNNP221 N(1) = n; % ranking of selected prototypes222 L(n) = []; % candidate prototypes (all not yet selected objects)223 224 for j=2:p % extend prototype set225 switch crit % select the next prototype out of candidates in L226 case 'maxdist'227 [~,n] = min(max(f(:,L)));228 case 'meandist'229 [~,n] = min(mean(f(:,L)));230 end231 e = min([d(:,L(n)) e],[],2); % update dNNP232 f = min(d,repmat(e,1,k)); % update replacement of distances that are larger233 % than dNNP by dNNP234 N(j) = L(n); % update list of selected prototypes235 L(n) = []; % update list of candidate prototypes236 end237 -
/prextra/Contents.m
r30 r20 24 24 %rbsvc Automatic radial basis SVC 25 25 %kannc Fast k-nn classifier for large datasets by annquery 26 %dectreec Decision tree (fast, because it's using compiled code)27 %randomforestc Random Forest (fast, because it's using compiled code)28 26 % 29 27 %auc error under the curve estimator -
/prextra/prcontent2html.m
r30 r20 1 1 %PRCONTENT2HTML Construct HTML file from PRTools Contents file 2 2 % 3 % PRCONTENT2HTML(NAME,RECREATE,HTMLDIR) 4 5 6 function out = prcontent2html(name,recreate,htmldir) 7 8 if nargin < 3, htmldir = cd; end 9 if nargin < 2 | isempty(recreate), recreate = 0; end 3 % PRCONTENT2HTML(NAME,RECREATE) 4 5 6 function out = prcontent2html(name,recreate) 7 8 if nargin < 2, recreate = 0; end 10 9 11 10 if exist([name '/Contents.m']) == 2 … … 64 63 pp = fileparts(file); 65 64 [pp2,subdir] = fileparts(pp); 66 s = [s '<tr> <td width="100" valign="top">' commandrefs(tok,recreate,subdir ,htmldir) '</td>'];65 s = [s '<tr> <td width="100" valign="top">' commandrefs(tok,recreate,subdir) '</td>']; 67 66 s = [s '<td>' posttok '</td></tr>']; 68 67 end … … 70 69 s = [s '</table>']; 71 70 s = [s '</p></body></html>']; 72 writf([ fullfile(htmldir,name)'.html'],s);71 writf([name '.html'],s); 73 72 if nargout > 0 74 73 out = s; … … 131 130 return 132 131 133 function s = commandrefs(r,recreate,subdir ,htmldir)132 function s = commandrefs(r,recreate,subdir) 134 133 if nargin < 2, recreate = 0; end 135 134 if regexp(r,'^ *$') … … 144 143 end 145 144 146 if exist( fullfile(htmldir,htmlname),'file') == 2145 if exist(htmlname,'file') == 2 147 146 s = [s '<a href="' htmlname '">' tok '</a>, ']; 148 147 elseif isempty(tok) | regexp(tok,'^ *') -
/prextra/prhelp2html.m
r30 r20 1 1 %PRHELP2HTML Construct HTML file from help part of PRTools routine 2 2 % 3 % S = PRHELP2HTML(COMMAND,RECREATE,HTMLDIR) 4 % S = PRHELP2HTML(TOOLBOX,RECREATE,HTMLDIR) 3 % S = PRHELP2HTML(COMMAND,RECREATE,SUBDIR) 5 4 % 6 5 % INPUT 7 6 % COMMAND String with PRTools command, default: all prtools m-files 8 % TOOLBOX Name of the toolbox to be handled, default PRTOOLS.9 % Toolbox should be in the bath in in this call the last10 % character should be a '/'.11 7 % RECREATE 0/1 flag indicating whether non-existing references 12 8 % in the SEE ALSO section should be created as well 13 % HTMLDIR String with desireddirectory in which the HTML9 % SUBDIR String with desired sub-directory in which the HTML 14 10 % file should be stored 15 11 % … … 60 56 61 57 62 % BEFORE YOU START TO DEBUG, READ THIS 63 % This routine was original intended to work on the prtools dir only. 64 % Later it was somewhat changed in order to handle files in prdatasets, 65 % prdatafiles and possibly distools and dd_tools as well. Only for 66 % prtools the subdir structure (with the @dataset, @datafile, @mapping 67 % sub dirs) is recognized, and only if the first parameter, COMMAND, is 68 % empty. 69 % 70 % The Contents files have a special layout. It is handled by prcontent2html 71 % in case of PRTools, but for other toolboxes it most likely doesn't work. 72 % 73 % The formatting rules of the PRTools help are strict. Don't try to relax 74 % them in the below code, but change the help-text if you are not satisfied 75 % with the result. Especially avoid ' ' (double spaces) where they are not 76 % needed as the conversion jumps into a table-mode as soon as they are 77 % encountered. 78 % 79 % Bob Duin, April 2011 80 81 function out = prhelp2html(name,recreate,htmldir) 82 83 if nargin < 3, htmldir = cd; end 84 if nargin < 2 | isempty(recreate), recreate = 0; end 85 if nargin < 1 | isempty(name) % default is prtools 86 dirs = {'ldc','dataset','datafile','mapping'}; 87 run_all_files(mfilename,dirs,htmldir); 88 s = prcontent2html('prtools',[],htmldir); 58 59 60 function out = prhelp2html(name,recreate,subdir) 61 62 if nargin < 3, subdir = []; end 63 if nargin < 2 || isempty(recreate), recreate = 0; end 64 if nargin < 1 65 run_all_files(mfilename); 66 s = prcontent2html('prtools'); 89 67 if nargout > 0 90 68 out = s; 91 69 end 92 70 return; 93 else94 if strcmp(name(end),'/') & exist(name(1:end-1),'dir') == 795 name = name(1:end-1);96 dirs = {fullfile(name,'Contents.m')};97 run_all_files(mfilename,dirs,htmldir);98 s = prcontent2html(name,[],htmldir); % does not work usually99 if nargout > 0100 out = s;101 end102 return103 end104 71 end 105 72 … … 111 78 end 112 79 %[pp,name] = fileparts(file); 113 if isempty( htmldir)114 [xx, htmldir] = fileparts(fileparts(file));115 end 116 %if isempty(strmatch(subdir,char('prtools','@dataset','@datafile','@mapping'),'exact'))117 % %disp([name ' Not PRTools'])118 %out = [];119 %return120 %end80 if isempty(subdir) 81 [xx,subdir] = fileparts(fileparts(file)); 82 end 83 if isempty(strmatch(subdir,char('prtools','@dataset','@datafile','@mapping'),'exact')) 84 % disp([name ' Not PRTools']) 85 out = []; 86 return 87 end 121 88 122 89 disp(file) … … 328 295 state = 'seealso'; 329 296 if ~single 330 s = [s commandrefs(posttok,recreate ,htmldir)];297 s = [s commandrefs(posttok,recreate)]; 331 298 end 332 299 else % undefined lines 333 300 if examplestate 334 301 if length(u) > 3 && strcmpi(u(1:4),'see ') 335 s = [s '</p>' commandrefs(u(5:end),recreate ,fileparts(htmldir)) '<p>'];302 s = [s '</p>' commandrefs(u(5:end),recreate) '<p>']; 336 303 else 337 304 s = [s strrep(code(strrep(r,' ','#$!'),0,3),'#$!',' ') '<br>']; … … 349 316 s = [s '<strong><font size="4">' findmakecode(u(3:end)) '</font></strong><br>']; 350 317 else 351 s = [s commandrefs(u,recreate ,htmldir)];318 s = [s commandrefs(u,recreate)]; 352 319 end 353 320 elseif tabstartspace && tabstate && (colpos1 > colpos0) ... … … 410 377 s = [s '</p>' content_manual '</body></html>']; 411 378 [qq,name] = fileparts(name); % allows for names like dataset/show 412 % if exist(fullfile(htmldir,name),'file') == 2 413 % htmlname = fullfile(htmldir,name); 414 % else 415 % %htmlname = [tok '.html']; 416 % file = which(name); 417 % pp = fileparts(file); 418 % [qq,subdir] = fileparts(pp); 419 % htmldir = fullfile(fileparts(htmldir),subdir); 420 % htmlname = fullfile(htmldir,name); 421 % end 422 423 if exist([htmldir],'file') ~= 7 424 mkdir(htmldir); 425 end 426 writf([fullfile(htmldir,name) '.html'],s); 379 if exist(['./' subdir],'file') ~= 7 380 mkdir(subdir); 381 end 382 writf([fullfile(subdir,name) '.html'],s); 427 383 disp([int2str(recreate) ' ' name ' html created']) 428 384 if nargout > 0 … … 500 456 end 501 457 502 function s = commandrefs(r,recreate,htmldir) 503 if nargin < 3, htmldir = cd; end 504 if nargin < 2 | isempty(recreate), recreate = 0; end 458 function s = commandrefs(r,recreate) 459 if nargin < 2, recreate = 0; end 505 460 s = []; 506 461 r_debug = r; … … 512 467 pp = fileparts(file); 513 468 [qq,subdir] = fileparts(pp); 514 % htmlname = fullfile(subdir,htmlname); 515 htmlfullname1 = fullfile(htmldir,htmlname); 516 htmlfullname2 = fullfile(fullfile(fileparts(htmldir),subdir),htmlname); 517 if exist(htmlfullname1,'file') == 2 % check whether command is in htmldir 518 s = [s '<a href="./' htmlname '">' tok '</a>, ']; 519 elseif exist(htmlfullname2,'file') == 2 % exists elsewhere? 520 s = [s '<a href="../' fullfile(subdir,htmlname) '">' tok '</a>, ']; 469 htmlname = fullfile(subdir,htmlname); 470 if exist(htmlname,'file') == 2 471 s = [s '<a href="../' htmlname '">' tok '</a>, ']; 521 472 elseif isempty(tok) || ~isempty(regexp(tok,'^ *', 'once' )) 522 473 ; … … 603 554 return 604 555 605 function run_all_files(command ,dirs,subdir)606 607 %dirs = {'ldc','dataset','datafile','mapping'};556 function run_all_files(command) 557 558 dirs = {'ldc','dataset','datafile','mapping'}; 608 559 for n=1:length(dirs) 609 560 prtools_dir = fileparts(which(dirs{n})); … … 613 564 [qq,name] = fileparts(ff{j}); 614 565 if n==1 615 feval(command,name ,[],fullfile(subdir,prtools_dirname)); % prtools main commands566 feval(command,name); % prtools main commands 616 567 else 617 feval(command,fullfile(prtools_dirname,name) ,[],fullfile(subdir,prtools_dirname)); % subdir commands568 feval(command,fullfile(prtools_dirname,name)); % subdir commands 618 569 end 619 570 end
Note: See TracChangeset
for help on using the changeset viewer.