📄 psvm.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>psvm.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>varargout</span>=<span class=defun_name>psvm</span>(<span class=defun_in>model,options</span>)<br><span class=h1>% PSVM Plots decision boundary of binary SVM classifier.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% h = psvm(...)</span><br><span class=help>% psvm(model)</span><br><span class=help>% psvm(model,options)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% This function samples the Support Vector Machiones (SVM) decision </span><br><span class=help>% function f(x) in 2D feature space and interpolates isoline </span><br><span class=help>% width f(x)=0. The isolines f(x)=+1 and f(x)=-1 are plotted as well. </span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% model [struct] Model of binary SVM classifier:</span><br><span class=help>% .Alpha [1 x nsv] Weights of training data.</span><br><span class=help>% .b [real] Bias of decision function.</span><br><span class=help>% .sv.X [dim x nsv] Support vectors.</span><br><span class=help>% .options.ker [string] Kernel function identifier.</span><br><span class=help>% See 'help kernel' for more info.</span><br><span class=help>% .options.arg [1 x nargs] Kernel argument(s).</span><br><span class=help>%</span><br><span class=help>% options [struct] Controls apperance:</span><br><span class=help>% .background [1x1] If 1 then backgroud is colored according to </span><br><span class=help>% the value of decision function (default 0).</span><br><span class=help>% .sv [1x1] If 1 then the support vectors are marked (default 1).</span><br><span class=help>% .sv_size [1x1] Marker size of the support vectors.</span><br><span class=help>% .margin [1x1] If 1 then margin is displayed (default 1).</span><br><span class=help>% .gridx [1x1] Sampling in x-axis (default 25).</span><br><span class=help>% .gridy [1x1] Sampling in y-axis (default 25).</span><br><span class=help>% .color [int] Color of decision boundary (default 'k').</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% h [struct] Handles of used graphical objects.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% data = load('riply_trn'); </span><br><span class=help>% model = smo( data, struct('ker','rbf','arg',1,'C',10) );</span><br><span class=help>% figure; ppatterns(data); </span><br><span class=help>% psvm( model, struct('background',1) );</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>About:</span> Statistical Pattern Recognition Toolbox</span><br><span class=help1>% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a></span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a></span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a></span><br><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 25-may-2004, VF</span><br><span class=help1>% 10-may-2004, VF</span><br><span class=help1>% 5-oct-2003, VF, returns handles</span><br><span class=help1>% 14-Jan-2003, VF</span><br><span class=help1>% 21-oct-2001, V.Franc</span><br><span class=help1>% 16-april-2001, V. Franc, created</span><br><br><hr><span class=comment>% Process input arguments </span><br><span class=comment>%------------------------------------------------</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, options=[]; <span class=keyword>else</span> options=c2s(options); <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'background'</span>), options.background = 0; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'sv'</span>), options.sv = 1; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'margin'</span>), options.margin = 1; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'gridx'</span>), options.gridx = 25; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'gridy'</span>), options.gridy = 25; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'sv_size'</span>), options.sv_size = 12; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'color'</span>), options.color = <span class=quotes>'k'</span>; <span class=keyword>end</span><br><br><span class=comment>% variable for handles</span><br>h = [];<br><br><span class=comment>% get axis</span><br>a = <span class=graph>axis</span>;<br>old_hold = ishold;<br>hold on;<br><br><span class=comment>% plot Support Vectos</span><br><span class=keyword>if</span> options.sv,<br> h.sv = ppatterns(model.sv.X,<span class=quotes>'ok'</span> ,options.sv_size);<br><span class=keyword>end</span><br><br><span class=comment>% limits of current figure</span><br>xmin=a(1);<br>xmax=a(2);<br>ymin=a(3);<br>ymax=a(4);<br> <br><span class=comment>% makes grid </span><br>[X,Y] = meshgrid(xmin:(xmax-xmin)/options.gridx:xmax,...<br> ymin:(ymax-ymin)/options.gridy:ymax);<br><br><span class=comment>% generate samples</span><br>tst_data=[reshape(X<span class=quotes>',1,prod(size(X)));reshape(Y'</span>,1,prod(size(Y)))];<br><br><span class=comment>% classify points</span><br>[pred_labels, dec_fun] = svmclass(tst_data,model);<br><br><span class=comment>% compute color limits</span><br>l=(-min(dec_fun)+max(dec_fun))/2;<br><br><span class=comment>% reshape dec_fun</span><br>Z = reshape(dec_fun,size(X,1),size(X,2))';<br><br><span class=comment>% colors background </span><br><span class=keyword>if</span> options.background,<br> h.background = pcolor(X,Y,Z);<br><span class=keyword>end</span><br><br><span class=comment>% smooth shading</span><br>shading interp;<br><br><span class=comment>% plots decision boundary</span><br>[dummy,h.boundary] = contour(X,Y,Z,[0,0],options.color);<br><br><span class=comment>% plots margins</span><br><span class=keyword>if</span> options.margin,<br> [dummy,h.margin_plus] = contour(X,Y,Z,[1,1],[options.color,<span class=quotes>'--'</span>]);<br> [dummy,h.margin_minus] = contour(X,Y,Z,[-1,-1],[options.color,<span class=quotes>'--'</span>]);<br><span class=keyword>end</span><br><br><span class=comment>% set color limits and colormap</span><br><span class=keyword>if</span> options.background,<br> <span class=graph>set</span>(h.background, <span class=quotes>'LineStyle'</span>,<span class=quotes>'none'</span> );<br> <span class=graph>set</span>(<span class=graph>gca</span>,<span class=quotes>'Clim'</span>,[-l l]);<br> <br> <span class=comment>% creates colormap </span><br> g=gray(64);<br> cmp=[g(33:<span class=keyword>end</span>,:);flipud(g(33:<span class=keyword>end</span>,:))];<br> cmp(1:32,1)=cmp(1:32,1)/2;<br> cmp(1:32,3)=cmp(1:32,3)/2;<br> cmp(33:<span class=keyword>end</span>,3)=cmp(33:<span class=keyword>end</span>,3)/2;<br> <span class=graph>colormap</span>(cmp)<br><span class=keyword>end</span><br><br><span class=keyword>if</span> ~old_hold, hold off; <span class=keyword>end</span><br><br><span class=keyword>if</span> <span class=stack>nargout</span> >= 1, <span class=stack>varargout</span>{1} = h; <span class=keyword>end</span><br><br><span class=jump>return</span>;<br><span class=comment>% EOF</span><br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -