⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svmfwd.m

📁 LibSVM工具箱
💻 M
字号:
function [Y, Y1] = svmfwd(net, X)% SVMFWD - Forward propagation through Support Vector Machine classifier% %   Y = SVMFWD(NET, X)%   For a data structure NET, the matrix of vectors X is input into the%   Support Vector Machine described by NET and the matrix of outputs Y%   is computed. NET must have non-empty fields NET.sv, NET.svcoeff and%   NET.bias, these fields are set during training by SVMTRAIN.%   X must contain one input vector per row. Y is a column vector with%   one entry for each input vector in X. Y(i) is the SVM output for%   input vector X(i,:), it is%     +1, if X(i,:) is classified as belonging to class 1%     -1, if X(i,:) is classified as belonging to class -1%   [Y, Y1] = SVMFWD(NET, X) also gives the column vector Y1 containing%   the SVM output before computing the sign. Y1(i) is equivalent to the%   distance of point X(i,:) from the separating hyperplane.%%   See also%   SVM, SVMTRAIN, SVMKERNEL%% % Copyright (c) Anton Schwaighofer (2001)% $Revision: 1.2 $ $Date: 2002/01/07 19:53:06 $% mailto:anton.schwaighofer@gmx.net% % This program is released unter the GNU General Public License.% % Check arguments for consistencyerrstring = consist(net, 'svm', X);if ~isempty(errstring);  error(errstring);end[N d] = size(X);if strcmp(net.kernel, 'linear'),  if ~isfield(net, 'normalw') | ~all(size(net.normalw)==[1 d]),    error('Structure NET does not contain a valid field ''normalw''');  endelse  if ~isfield(net, 'sv') | ((size(net.sv, 2)~=d) & ~isempty(net.sv)),    error('Structure NET does not contain a valid field ''sv''');  end  nbSV = size(net.sv, 1);  if nbSV~=size(net.svcoeff, 1),    error('Structure NET does not contain a valid field ''svcoeff''');  end  if ~isfield(net, 'bias') | ~all(size(net.bias)==[1 1]),    error('Structure NET does not contain a valid field ''bias''');  endendif strcmp(net.kernel, 'linear'),  Y1 = X*(net.normalw');else  chsize = net.chunksize;  Y1 = zeros(N, 1);  chunks1 = ceil(N/chsize);  chunks2 = ceil(nbSV/chsize);  for ch1 = 1:chunks1,    ind1 = (1+(ch1-1)*chsize):min(N, ch1*chsize);    for ch2 = 1:chunks2,      ind2 = (1+(ch2-1)*chsize):min(nbSV, ch2*chsize);      K12 = svmkernel(net, X(ind1, :), net.sv(ind2, :));      Y1(ind1) = Y1(ind1)+K12*net.svcoeff(ind2);    end  endendY1 = Y1+net.bias;Y = sign(Y1);Y(Y==0) = 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -