📄 evalsvm.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>evalsvm.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>[best_model,Errors] </span>= <span class=defun_name>evalsvm</span>(<span class=defun_in>arg1,arg2,arg3</span>)<br><span class=h1>% EVALSVM Trains and evaluates Support Vector Machines classifier.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% [model,Errors] = evalsvm(data,options)</span><br><span class=help>% [model,Errors] = evalsvm(trn_data,val_data,options)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% [model,Errors] = evalsvm(data,options) uses cross-validation</span><br><span class=help>% to assess SVM classifiers with given kernel arguments and </span><br><span class=help>% regularization constants.</span><br><span class=help>% </span><br><span class=help>% The kernel type is given in options.ker (see 'help kernel').</span><br><span class=help>% The SVM solver to be used is specified by field options.solver </span><br><span class=help>% (default 'smo'). Both binary and multi-class SVM solvers are </span><br><span class=help>% allowed. The input data have the following format:</span><br><span class=help>% be used with regards to the number of labels of training data </span><br><span class=help>% data.X [dim x num_data] ... training vectors.</span><br><span class=help>% data.y [1 x num_data] ... labels.</span><br><span class=help>% The set of SVM parameters to be evaluated are specified in:</span><br><span class=help>% options.arg [dimarg x nargs] ... enumeration of kernel arguments; </span><br><span class=help>% dimarg determins number of kernel argumens (e.g., dimarg = 1 </span><br><span class=help>% for 'rbf' kernel and dimarg = 2 for 'sigmoid').</span><br><span class=help>% options.C [1 x nc] ... enumeration of regularization constants.</span><br><span class=help>%</span><br><span class=help>% Some extra parameters for the selected SVM solver can be</span><br><span class=help>% specified in the field options.solver_options.</span><br><span class=help>%</span><br><span class=help>% Each configuration of SVM paramaters is evaluated using the</span><br><span class=help>% cross-validation. The number of folds is given in </span><br><span class=help>% optios.num_folds (default 5). The trained SVM model with </span><br><span class=help>% the smallest cross-validation error is returned. The computed</span><br><span class=help>% cross-validation errors with respect to SVM parametes are </span><br><span class=help>% returned in Errors [nc x nargs].</span><br><span class=help>%</span><br><span class=help>% The progress info is displayed if options.verb is set to 1</span><br><span class=help>% (default 0).</span><br><span class=help>%</span><br><span class=help>% [model,Errors] = evalsvm(trn_data,val_data,options) each</span><br><span class=help>% SVM is trained on the trn_data and evaluated on the </span><br><span class=help>% validation val_data instead of using cross-validation.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% trn = load('riply_trn');</span><br><span class=help>% tst = load('riply_tst');</span><br><span class=help>% options.ker = 'rbf';</span><br><span class=help>% options.arg = [0.1 0.5 1 5];</span><br><span class=help>% options.C = [1 10 100];</span><br><span class=help>% options.solver = 'smo';</span><br><span class=help>% options.num_folds = 5;</span><br><span class=help>% options.verb = 1;</span><br><span class=help>% [model,Errors] = evalsvm(trn,options);</span><br><span class=help>% figure; mesh(options.arg,options.C,Errors);</span><br><span class=help>% hold on; xlabel('arg'); ylabel('C');</span><br><span class=help>% ypred = svmclass(tst.X,model);</span><br><span class=help>% cerror(ypred,tst.y)</span><br><span class=help>%</span><br><span class=help>% See also: </span><br><span class=help>% SMO, SVMLIGHT, SVMCLASS.</span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 17-sep-2004, VF, Help improved. Info about training stage added.</span><br><span class=help1>% 18-aug-2004, VF, svm_options changed to solver_options</span><br><span class=help1>% 4-june-2004, VF</span><br><span class=help1>% 3-jun-2004, VF</span><br><br><hr><span class=keyword>if</span> <span class=stack>nargin</span> == 2,<br> <span class=comment>% evaluation by cross-validation</span><br> <span class=comment>%=================================================================</span><br> options = c2s(arg2);<br> <span class=keyword>if</span> ~isfield(options,<span class=quotes>'verb'</span>), options.verb = 0; <span class=keyword>end</span><br> <span class=keyword>if</span> ~isfield(options,<span class=quotes>'solver'</span>), options.solver = <span class=quotes>'smo'</span>; <span class=keyword>end</span><br> <span class=keyword>if</span> ~isfield(options,<span class=quotes>'ker'</span>), options.ker = <span class=quotes>'linear'</span>; <span class=keyword>end</span><br> <span class=keyword>if</span> ~isfield(options,<span class=quotes>'num_folds'</span>), options.num_folds = 5; <span class=keyword>end</span><br> <span class=keyword>if</span> ~isfield(options,<span class=quotes>'solver_options'</span>), options.solver_options = []; <span class=keyword>end</span><br><br> nargs = size(options.arg,2);<br> nc = length(options.C);<br> [dim,num_data] = size(arg1.X);<br><br> solver_options = options.solver_options;<br> solver_options.ker = options.ker;<br> min_error = inf;<br> Errors = [];<br> cnt_model = 0;<br> num_model = nc*nargs;<br> <br> <span class=comment>% data partitioning</span><br> [itrn,itst] = crossval(num_data,options.num_folds);<br> <br> <span class=keyword>for</span> i = 1:nargs,<br> arg = options.arg(:,i);<br> <span class=keyword>for</span> j = 1:nc,<br> cnt_model = cnt_model + 1;<br> C = options.C(j);<br> <br> <span class=comment>% svm parameters</span><br> solver_options.C = C;<br> solver_options.arg = arg;<br> <br> <span class=comment>% display info</span><br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>'Model %d/%d: ker=%s, C=%f, arg='</span>, ...<br> cnt_model, num_model,solver_options.ker, C);<br> <span class=io>fprintf</span>(<span class=quotes>'%f '</span>, arg);<br> <span class=io>fprintf</span>(<span class=quotes>'\n'</span>);<br> <span class=keyword>end</span><br> <br> fold_error = zeros(options.num_folds,1);<br> <br> <span class=keyword>for</span> k=1:options.num_folds,<br><br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>'fold %d/%d: #trn/tst = %d/%d, training'</span>, ...<br> k, options.num_folds, length(itrn{k}), length(itst{k}));<br> <span class=keyword>end</span><br> <br> trn.X = arg1.X(:,itrn{k});<br> trn.y = arg1.y(:,itrn{k});<br> tst.X = arg1.X(:,itst{k});<br> tst.y = arg1.y(:,itst{k});<br> <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -