Changes in / [30:20]


Ignore:
Files:
9 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • /distools/clevald.m

    r30 r20  
    248248                                        J = JR(1:nj);
    249249                                        if isempty(repsize)
    250                                                 R = J;
     250                                                R = JR;
    251251                                        elseif repsize < 1
    252252                                                R = JR(1:ceil(repsize*nj));
  • /distools/genddat.m

    r30 r20  
    6060function [DTR,DTE,Itr,Ite] = genddat(D,m,k);
    6161
    62   if nargin < 3, k = []; end
    63 
    64         % If input is a cell array of datasets, apply this procedure
    65   % 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                 end
    76                 return;
    77         end
    78 
    79 
    80 
    8162[n,nk,c] = getsize(D);
    8263nlab     = getnlab(D);
    8364discheck(D,[],1);   % allow for similarities     
    8465
    85 if ~isempty(k)
     66if nargin < 3,
     67        k = [];
     68else
    8669        if length(k) == 1
    8770                k = k*ones(1,c);
  • /distools/pe_em.m

    r30 r20  
    3939% ALF of the total variance is preserved for ALF in (0,1). The resulting X is found
    4040% 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 space
    42 % 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).
    4343%
    4444% SEE ALSO
    45 % MAPPINGS, DATASETS, AUGPSEM, PCA, GETSIG, SETSIG
     45% MAPPINGS, DATASETS, AUGPSEM, PCA, PE_PCA, PE_SPEC, GETSIG, SETSIG
    4646%
    4747% LITERATURE
  • /distools/protselfd.m

    r30 r20  
    55%
    66% INPUT
    7 %   D     Dataset, dissimilarity matrix
     7%   D     Dataset, square dissimilarity matrix
    88%   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).
    1514%
    1615% OUTPUT
    1716%   W     Selection mapping ('feature selection')
    1817%   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
    2220%
    2321% 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.
    2631%
    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.
    3636%
    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.
    4942%
    5043% REFERENCE
     
    6255%
    6356
    64 function [R,e,D] = protselfd(D,ksel,type)
     57function [R,e,D,J,nlab,clab] = protselfd(D,ksel,par,J,e,nlab,clab)
    6558
    66   if nargin < 2, ksel = []; end
    67   if nargin < 3, type = []; end
     59if nargin < 2, ksel = []; end
     60if nargin < 3 | isempty(par), par = 'all'; end
    6861
    69   if nargin < 1 || isempty(D)  % allow for D*protselfd([],pars)
    70     R = mapping(mfilename,'untrained',{ksel,type});
     62if nargin < 4 % user call
     63 
     64  if nargin < 1 | isempty(D)  % allow for D*protselfd([],pars)
     65    R = mapping(mfilename,'untrained',{ksel,par});
    7166    R = setname(R,'Forward Prototype Sel');
    7267    return
    7368  end
    7469 
    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     otherwise
    81       error('Unknown selection type')
    82   end
    83      
    84 return 
    85 
    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 selection
    89 
    90   isdataset(D);
    9170  [m,k,c] = getsize(D);
    9271  if isempty(ksel), ksel = k; end
     
    12099                % this will be a deep recursive call !!!
    121100                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);
    123102                prwaitbar(0);
    124103        end
     
    131110  D = floor((Jopt(end)+Jopt(1))/2);
    132111 
    133 return
     112  % done!
    134113 
    135 function [R,e,D,J,nlab,clab] = protselfd_super(D,ksel,R,J,e,nlab,clab)
    136 
     114else  % internal call, parameters may have another meaning!
     115 
     116  R = par;  % prototypes sofar
    137117  [m,k,c] = getsize(D);
    138118  d = +D;
     
    155135    de = sum(ds);
    156136                % if better, use it
    157     if ee < emin || ((ee == emin) && (de < dmin))
     137    if ee < emin | ((ee == emin) & (de < dmin))
    158138      emin = ee;
    159139      jmin = j;
     
    165145  end
    166146
    167   if emin <= e(r) || 1 % we even continue if emin increases due to peaking
     147  if emin <= e(r) | 1 % we even continue if emin increases due to peaking
    168148    e(r+1) = emin;
    169149    R = Rmin;
    170150    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);
    172152    end
    173153  end
    174154 
    175 return
    176 
    177 %PROTSELFD_UNSUPER Forward prototype selection
    178 %
    179 %               N = PROTSELFD_UNSUPER(D,P,CRIT)
    180 %
    181 % INPUT
    182 %   D     Square dissimilarity matrix, zeros on diagonal
    183 %   P     Number of prototypes to be selected
    184 %   CRIT  'dist' or 'centre'
    185 %
    186 % OUTPUT
    187 %   N     Indices of selected prototypes
    188 %
    189 % DESCRIPTION
    190 % Sort objects given by square dissim matrix D using a greedy approach
    191 % 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 evenly
    195 % spaced judged from their dissimilarities. This may be used as
    196 % initialisation in KCENTRES. It works reasonably, but not very good.
    197 %
    198 % SEE ALSO
    199 % KCENTRES
    200 
    201 % Copyright: R.P.W. Duin, r.p.w.duin@prtools.org
    202 % Faculty EWI, Delft University of Technology
    203 % P.O. Box 5031, 2600 GA Delft, The Netherlands
    204 
    205 function N = protselfd_unsuper(d,p,crit)
    206 
    207 d = +d;
    208 [m,k] = size(d);
    209 if isempty(crit), crit = 'max'; end
    210 if nargin < 2 || isempty(p), p = k; end
    211 L = 1:k;
    212 N = zeros(1,p);
    213 switch crit
    214   case 'maxdist'
    215     [~,n] = min(max(d));    % this is the first (central) prototype
    216   case 'meandist'
    217     [~,n] = min(mean(d));   % this is the first (central) prototype
    218155end
    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 dNNP
    221 N(1) = n;                   % ranking of selected prototypes
    222 L(n) = [];                  % candidate prototypes (all not yet selected objects)
    223 
    224 for j=2:p                   % extend prototype set
    225   switch crit               % select the next prototype out of candidates in L
    226     case 'maxdist'
    227       [~,n] = min(max(f(:,L)));
    228     case 'meandist'
    229       [~,n] = min(mean(f(:,L)));
    230   end
    231   e = min([d(:,L(n)) e],[],2);   % update dNNP
    232   f = min(d,repmat(e,1,k));      % update replacement of distances that are larger
    233                                  % than dNNP by dNNP
    234   N(j) = L(n);                   % update list of selected prototypes
    235   L(n) = [];                     % update list of candidate prototypes
    236 end
    237 
  • /prextra/Contents.m

    r30 r20  
    2424%rbsvc        Automatic radial basis SVC
    2525%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)
    2826%
    2927%auc          error under the curve estimator
  • /prextra/prcontent2html.m

    r30 r20  
    11%PRCONTENT2HTML Construct HTML file from PRTools Contents file
    22%
    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
     6function out = prcontent2html(name,recreate)
     7
     8if nargin < 2, recreate = 0; end
    109
    1110if exist([name '/Contents.m']) == 2
     
    6463                pp = fileparts(file);
    6564                [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>'];
    6766                s = [s '<td>' posttok '</td></tr>'];
    6867        end
     
    7069s = [s '</table>'];
    7170s = [s '</p></body></html>'];
    72 writf([fullfile(htmldir,name) '.html'],s);
     71writf([name '.html'],s);
    7372if nargout > 0
    7473        out = s;
     
    131130return
    132131
    133 function s = commandrefs(r,recreate,subdir,htmldir)
     132function s = commandrefs(r,recreate,subdir)
    134133        if nargin < 2, recreate = 0; end
    135134        if regexp(r,'^ *$')
     
    144143        end
    145144       
    146         if exist(fullfile(htmldir,htmlname),'file') == 2
     145        if exist(htmlname,'file') == 2
    147146                s = [s '<a href="' htmlname '">' tok '</a>, '];
    148147        elseif isempty(tok) | regexp(tok,'^ *')
  • /prextra/prhelp2html.m

    r30 r20  
    11%PRHELP2HTML Construct HTML file from help part of PRTools routine
    22%
    3 %               S = PRHELP2HTML(COMMAND,RECREATE,HTMLDIR)
    4 %               S = PRHELP2HTML(TOOLBOX,RECREATE,HTMLDIR)
     3%               S = PRHELP2HTML(COMMAND,RECREATE,SUBDIR)
    54%
    65% INPUT
    76%   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 last
    10 %              character should be a '/'.
    117%   RECREATE   0/1 flag indicating whether non-existing references
    128%              in the SEE ALSO section should be created as well
    13 %   HTMLDIR     String with desired directory in which the HTML
     9%   SUBDIR     String with desired sub-directory in which the HTML
    1410%              file should be stored
    1511%
     
    6056
    6157
    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
     60function out = prhelp2html(name,recreate,subdir)
     61
     62if nargin < 3, subdir = []; end
     63if nargin < 2 || isempty(recreate), recreate = 0; end
     64if nargin < 1
     65        run_all_files(mfilename);
     66        s = prcontent2html('prtools');
    8967        if nargout > 0
    9068                out = s;
    9169        end
    9270        return;
    93 else
    94         if strcmp(name(end),'/') & exist(name(1:end-1),'dir') == 7
    95                 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 usually
    99                 if nargout > 0
    100                         out = s;
    101                 end
    102                 return
    103         end
    10471end
    10572
     
    11178end
    11279%[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 %       return
    120 % end
     80if isempty(subdir)
     81        [xx,subdir] = fileparts(fileparts(file));
     82end
     83if isempty(strmatch(subdir,char('prtools','@dataset','@datafile','@mapping'),'exact'))
     84%       disp([name ' Not PRTools'])
     85        out = [];
     86        return
     87end
    12188
    12289disp(file)
     
    328295                state = 'seealso';
    329296                if ~single
    330                         s = [s commandrefs(posttok,recreate,htmldir)];
     297                        s = [s commandrefs(posttok,recreate)];
    331298                end
    332299        else % undefined lines
    333300                if examplestate
    334301                        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>'];
    336303                        else
    337304                                s = [s strrep(code(strrep(r,' ','#$!'),0,3),'#$!','&nbsp;') '<br>'];
     
    349316                                s = [s '<strong><font size="4">' findmakecode(u(3:end)) '</font></strong><br>'];
    350317                        else
    351                                 s = [s commandrefs(u,recreate,htmldir)];               
     318                                s = [s commandrefs(u,recreate)];               
    352319                        end
    353320                elseif tabstartspace && tabstate && (colpos1 > colpos0) ...
     
    410377s = [s '</p>' content_manual '</body></html>'];
    411378[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);
     379if exist(['./' subdir],'file') ~= 7
     380        mkdir(subdir);
     381end
     382writf([fullfile(subdir,name) '.html'],s);
    427383disp([int2str(recreate) ' ' name ' html created'])
    428384if nargout > 0
     
    500456end
    501457
    502 function s = commandrefs(r,recreate,htmldir)
    503         if nargin < 3, htmldir = cd; end
    504         if nargin < 2 | isempty(recreate), recreate = 0; end
     458function s = commandrefs(r,recreate)
     459        if nargin < 2, recreate = 0; end
    505460        s = [];
    506461        r_debug = r;
     
    512467                pp = fileparts(file);
    513468                [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>, '];
    521472                elseif isempty(tok) || ~isempty(regexp(tok,'^ *', 'once' ))
    522473                        ;
     
    603554return
    604555
    605 function run_all_files(command,dirs,subdir)
    606 
    607 %dirs = {'ldc','dataset','datafile','mapping'};
     556function run_all_files(command)
     557
     558dirs = {'ldc','dataset','datafile','mapping'};
    608559for n=1:length(dirs)
    609560        prtools_dir = fileparts(which(dirs{n}));
     
    613564                [qq,name] = fileparts(ff{j});
    614565                if n==1
    615                         feval(command,name,[],fullfile(subdir,prtools_dirname)); % prtools main commands
     566                        feval(command,name); % prtools main commands
    616567                else
    617                         feval(command,fullfile(prtools_dirname,name),[],fullfile(subdir,prtools_dirname)); % subdir commands
     568                        feval(command,fullfile(prtools_dirname,name)); % subdir commands
    618569                end
    619570        end
Note: See TracChangeset for help on using the changeset viewer.