📄 evalsvm.html
字号:
<span class=comment>% run solver</span><br> model = <span class=eval>feval</span>( options.solver, trn, solver_options );<br> <br> <span class=keyword>if</span> options.verb == 1,<br> ypred = <span class=eval>feval</span>( model.fun, trn.X, model );<br> <span class=io>fprintf</span>(<span class=quotes>' err = %.4f, testing'</span>, cerror( ypred,trn.y));<br> <span class=keyword>end</span><br><br> <span class=comment>% classify validation data</span><br> ypred = <span class=eval>feval</span>( model.fun, tst.X, model );<br> <br> fold_error(k) = cerror( ypred, tst.y );<br><br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>' err = %.4f\n'</span>, fold_error(k));<br> <span class=keyword>end</span><br> <br> <span class=keyword>end</span><br> <br> <span class=comment>% cross-validation error</span><br> err = mean( fold_error );<br> Errors(j,i) = err;<br><br> <span class=keyword>if</span> min_error > err,<br> min_error = err;<br> best_model = model;<br> <br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>'cross-validation error = %.4f (best so far)\n\n'</span>, err);<br> <span class=keyword>end</span><br> <span class=keyword>else</span><br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>'cross-validation error = %.4f\n\n'</span>, err);<br> <span class=keyword>end</span><br> <span class=keyword>end</span><br> <br> <span class=keyword>end</span><br> <span class=keyword>end</span><br> <br> <span class=comment>% disp info</span><br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>'best model: ker=%s, C=%f, arg='</span>, ...<br> best_model.options.ker, best_model.options.C);<br> <span class=io>fprintf</span>(<span class=quotes>'%f '</span>, best_model.options.arg);<br> <span class=io>fprintf</span>(<span class=quotes>'\ncross-validation error = %.4f\n'</span>, min_error);<br> <span class=keyword>end</span><br> <br><span class=keyword>elseif</span> <span class=stack>nargin</span> == 3, <br> <span class=comment>% evaluation using val_data</span><br> <span class=comment>%================================================================= </span><br> options = c2s(arg3);<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>'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>'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>'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=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> <span class=keyword>if</span> options.verb == 1, <br> <span class=io>fprintf</span>(<span class=quotes>'#trn/tst = %d/%d, training'</span>, ...<br> length(arg1.y), length(arg2.y));<br> <span class=keyword>end</span><br> <br> <span class=comment>% run SVM solver</span><br> model = <span class=eval>feval</span>( options.solver, arg1, solver_options );<br> <br> <span class=keyword>if</span> options.verb == 1,<br> ypred = <span class=eval>feval</span>( model.fun, arg1.X, model );<br> <span class=io>fprintf</span>(<span class=quotes>' err = %.4f, testing'</span>, cerror( ypred,arg1.y));<br> <span class=keyword>end</span><br> <br> <span class=comment>% classify validation data</span><br> ypred = <span class=eval>feval</span>( model.fun, arg2.X, model );<br><br> err = cerror(ypred,arg2.y);<br> Errors(j,i) = err;<br><br> <span class=keyword>if</span> min_error > err,<br> min_error = err;<br> best_model = model;<br> <br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>' err = %.4f (best so far)\n\n'</span>, err);<br> <span class=keyword>end</span><br> <span class=keyword>else</span><br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>' err = %.4f\n\n'</span>, err);<br> <span class=keyword>end</span><br> <span class=keyword>end</span><br> <span class=keyword>end</span><br> <span class=keyword>end</span><br><br> <span class=comment>% disp info</span><br> <span class=keyword>if</span> options.verb == 1,<br> <span class=io>fprintf</span>(<span class=quotes>'best model: ker=%s, C=%f, arg='</span>, ...<br> best_model.options.ker, best_model.options.C);<br> <span class=io>fprintf</span>(<span class=quotes>'%f '</span>, best_model.options.arg);<br> <span class=io>fprintf</span>(<span class=quotes>'\ntesting error = %.4f\n'</span>, min_error);<br> <span class=keyword>end</span><br> <br><span class=keyword>end</span><br><br><span class=comment>%EOF</span><br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -