| Description of slclassify |
slclassify
PURPOSE 
SLCLASSIFY Classifies a set of samples according to final scores
SYNOPSIS 
function [decisions, decscores] = slclassify(scores, clabels, op, varargin)
DESCRIPTION 
CROSS-REFERENCE INFORMATION 
This function calls:
This function is called by:
- slclassify_eucnn SLCLASSIFY_EUCNN Classifies samples using Euclidena-based NN
- slcorrectrate SLCORRECTRATE Computes the correct rate of classification
SUBFUNCTIONS 
SOURCE CODE 
0001 function [decisions, decscores] = slclassify(scores, clabels, op, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 if nargin < 3
0057 raise_lackinput('slclassify', 3);
0058 end
0059 if ~isnumeric(scores) || ndims(scores) ~= 2
0060 error('sltoolbox:invalidarg', ...
0061 'scores should be an 2D numeric matrix');
0062 end
0063 m = size(scores, 1);
0064 if length(clabels) ~= m
0065 error('sltoolbox:sizmismatch', ...
0066 'The sizes of labels are inconsistent with the score matrix');
0067 end
0068
0069 opts.scheme = 'nn';
0070 opts = slparseprops(opts, varargin{:});
0071
0072
0073
0074 switch opts.scheme
0075 case 'nn'
0076 [decisions, decscores] = classify_nn(scores, clabels, op);
0077 case 'loo'
0078 [decisions, decscores] = classify_loo(scores, clabels, op);
0079 otherwise
0080 error('sltoolbox:invalidarg', ...
0081 'Invalid scheme for classification: %s', opts.scheme);
0082 end
0083
0084
0085
0086
0087
0088
0089
0090
0091 function [decisions, decscores] = classify_nn(scores, clabels, op)
0092
0093 switch op
0094 case 'high'
0095 [decscores, decinds] = max(scores, [], 1);
0096 case 'low'
0097 [decscores, decinds] = min(scores, [], 1);
0098 otherwise
0099 error('sltoolbox:invalidarg', ...
0100 'Invalid score option %s', op);
0101 end
0102
0103 clabels = clabels(:)';
0104 decisions = clabels(decinds);
0105
0106
0107
0108
0109 function [decisions, decscores] = classify_loo(scores, clabels, op)
0110
0111 n = size(scores, 1);
0112 if size(scores, 2) ~= n
0113 error('sltoolbox:sizmismatch', ...
0114 'In leave-one-out scheme, the score matrix should be square');
0115 end
0116 if n < 2
0117 error('sltoolbox:invalidarg', ...
0118 'In leave-one-out scheme, the set should have at least two elements');
0119 end
0120
0121
0122 inds_diag = (1 : n+1 : n^2);
0123 switch op
0124 case 'high'
0125 scores(inds_diag) = -Inf;
0126 case 'low'
0127 scores(inds_diag) = Inf;
0128 otherwise
0129 error('sltoolbox:invalidarg', ...
0130 'Invalid score option %s', op);
0131 end
0132
0133
0134 switch op
0135 case 'high'
0136 [decscores, decinds] = max(scores, [], 1);
0137 case 'low'
0138 [decscores, decinds] = min(scores, [], 1);
0139 end
0140
0141 clabels = clabels(:)';
0142 decisions = clabels(decinds);
0143
0144
0145
0146
0147
0148
Generated on Wed 20-Sep-2006 12:43:11 by m2html © 2003
|
|