📄 yxcsvmclassifer.m
字号:
function [YClassified, Z, err] = yxcSVMclassifer(Xtrain, Xtest, Y, alphaStar, bStar, kernel, sigma)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% If you have the Chinese book: 《数据挖掘中的新方法——支持向量机》, find the algorithm here:
% Classify C-SVC using algorithm 5.4.12 on page 193
%
% Otherwise, refer to this article: "Support Vector Machines: Hype or Hallelujah?"
% Section 6: SUMMARY OF SVM METHOD on page 5
% http://www.sigkdd.org/explorations/issue2-2/bennett.pdf
%
% Here is also a very good tutorial: "A Tutorial on Support Vector Machines for Pattern Recognition"
% www.umiacs.umd.edu/~joseph/support-vector-machines4.pdf
%
% A detailed description about iris flower data set:
% http://en.wikipedia.org/wiki/Iris_flower_data_set
%
% Author: Xuchen Yao. yaoxuchen@gmail.com
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Input:
% Xtrain/Xtest: num x dim Data, X has num points, every point is described by dim vectors
% Y: n x 1 Data, {1, -1}
% alphaStar: Optimized alpha
% bStar: bias, or primal threshold variable.
% kernel: see yxcSVMkernel
% sigma: see yxcSVMkernel
%
% Output:
% YClassified: n x 1 Data, {1, -1}, the calssified output.
% err: Error rate. If Xtrain equals Xtest, err is given.
% Z: YClassified before sign function.
[num, dim] = size(Xtrain);
if dim ~= 2
return;
end
if num ~= length(Y)
return;
end
Y = Y(:);
alphaStar = alphaStar(:);
% Algorithm 5.4.12, step (4)
H = yxcSVMkernel(Xtrain, Xtest, kernel, sigma)';
Z = H * (alphaStar .* Y);
Z = Z + bStar;
YClassified(find(Z > 0)) = 1;
YClassified(find(Z <= 0)) = -1;
YClassified = YClassified';
if(size(Xtest) == size(Xtrain))
if(Xtest == Xtrain)
err = length(find(YClassified ~= Y)) / length(Y);
end
else
err = NaN;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -