📄 psvm.m~
字号:
function psvm(data,labels,Alpha,bias,ker,arg,options )% PSVM vizualizes decision function of binary SVM problem.
% psvm(data,labels,Alpha,bias,ker,arg,options )%% PSVM vizualizes decision function for binary SVM problem % in 2D space. %% Mandatory inputs:% data [2xM] contains M training 2-dimensional patterns.% labels [1xM] labels of training patterns (1 or 2).% Alpha [1xM] Lagrange multipliers of the traning patterns.% bias [1x1] bias of decision function.% ker [string] identifies kernel (see 'help kernel').% arg [...] arguments of given kernel (see 'help kernel').
%% Optional inputs:% options.background [int] (default 0) if 1then backgroud
% is colored according to the value of decision function.
% options.sv [int] (default 1) if 1 then the Support Vectors
% are marked.
% options.margin [int] (default 1) if 1 then margin is displayed.
% options.patterns [int] (default 1) if 1 then patterns are
% displayed.
% options.gridx [int] (default 25) density of grid in y-axis.
% options.gridy [int] (default 25) density of grid in y-axis.
% options.psize [int] (default 5) size of patterns (points).
% options.color [int] (default 'k') color of separating function.%% See also PMSVM, SVM.%% Statistical Pattern Recognition Toolbox, Vojtech Franc, Vaclav Hlavac% (c) Czech Technical University Prague, http://cmp.felk.cvut.cz% Written Vojtech Franc (diploma thesis) 23.12.1999, 5.4.2000%
% Modifications
% 21-oct-2001, V.Franc% 16-april-2001, V. Franc, created
% at least 6 arguments must enter the functionif nargin < 6, error('Not enough input arguments.'); return;end
% set up default options
if nargin < 7, options.background = 0;
options.sv = 1;
options.margin = 1;
options.patterns = 1;
options.gridx = 25;
options.gridy = 25;
options.psize = 5;
options.color = 'k';else
if ~isfield(options,'background'), options.background = 0; end
if ~isfield(options,'sv'), options.sv = 1; end
if ~isfield(options,'margin'), options.margin = 1; end
if ~isfield(options,'patterns'), options.patterns = 1; end
if ~isfield(options,'gridx'), options.gridx = 25; end
if ~isfield(options,'gridy'), options.gridy = 25; end
if ~isfield(options,'psize'), options.psize = 5; end
if ~isfield(options,'color'), options.color = 'k'; end
end
% Lagrangians greater then ZERO_LIMIT are treated as Support VectorsZERO_LIMIT =1e-9;
% plots Support Vectors
if options.patterns,
ppatterns(data,labels,options.psize);
end
% get axisa = axis;
old_hold = ishold;hold on;
% plot Support Vectos
if options.sv,
inx1 = find( Alpha > ZERO_LIMIT & labels == 1);
if ~isempty(inx1),
ppatterns(data(:,inx1), ['o' color(1)], options.psize+4 );
end
inx2 = find( Alpha > ZERO_LIMIT & labels == 2);
if ~isempty(inx2),
ppatterns(data(:,inx2), ['o' color(2)], options.psize+4 );
end
end
% limits of current figurexmin=a(1);xmax=a(2);ymin=a(3);ymax=a(4); % makes grid [X,Y] = meshgrid(xmin:(xmax-xmin)/options.gridx:xmax,...
ymin:(ymax-ymin)/options.gridy:ymax);% make testing patterns covering whole gridtst_data=[reshape(X',1,prod(size(X)));reshape(Y',1,prod(size(Y)))];% classify points[pred_labels, dec_fun] = svmclass2(tst_data,data,labels,Alpha,bias,ker,arg);% compute color limitsl=(-min(dec_fun)+max(dec_fun))/2;% reshape dec_fun
Z = reshape(dec_fun,size(X,1),size(X,2))';
% colors background if options.background, phandle = pcolor(X,Y,Z);end
% smooth shadingshading interp;% plots decision boundary
contour(X,Y,Z,[0,0],options.color);% plots margins
if options.margin,
contour(X,Y,Z,[1,1],[options.color,'--']);
contour(X,Y,Z,[-1,-1],[options.color,'--']);
end
% set color limits and colormapif options.background, set(phandle, 'LineStyle','none' ); set(gca,'Clim',[-l l]);
% creates colormap and sets it up
g=gray(64);
cmp=[g(33:end,:);flipud(g(33:end,:))];
cmp(1:32,1)=cmp(1:32,1)/2;
cmp(1:32,3)=cmp(1:32,3)/2;
cmp(33:end,3)=cmp(33:end,3)/2;
% cmp(33:end,2)=cmp(33:end,2)/2;
colormap(cmp)
end
if ~old_hold,
hold off;
end
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -