我已经有一个训练有素的SVM模型(Mdl),可以保存alpha,偏差,支持向量,支持向量标签... 我想在不使用Matlab预测函数的情况下计算新功能的预测值。但是我无法获得正确的输出。
我使用一对高斯内核SVM对5个类别进行分类。有关于第一个SVM模型(类1或2)的代码
%%
load('Mdl.mat')
%%
% dicide which SVM (1-10)
% load Mdl first
i = 1; % the order of the SVM
alpha = Mdl.BinaryLearners{i}.Alpha;
Bias = Mdl.BinaryLearners{i}.Bias;
Sigma = Mdl.BinaryLearners{i}.Sigma;
Mu = Mdl.BinaryLearners{i}.Mu;
SV = Mdl.BinaryLearners{i}.SupportVectors; % (i=1)size
SVLabel = Mdl.BinaryLearners{i}.SupportVectorLabels;
% Bias = Bias*Sigma + Mu;
Sigma = repmat(Sigma,size(SV,1),1);
Mu = repmat(Mu,size(SV,1),1);
SV = SV.* Sigma + Mu;
%%
Newpoint = testing_feature(1,:); % size: 1x318
NewpointV = repmat(Newpoint,size(SV,1),1);
% Gaussian Kernel: G(x1,x2) = exp(-||x1-x2||^2)
GaussianV = exp( -((sqrt((NewpointV-SV).^2)).^2) ); % size: 7340x318
yn = repmat( alpha .* SVLabel ,1,318) .* GaussianV;
% yn = sum(yn);
yn = (sum(yn)+Bias)/size(SV,1);
p = sum(yn)/size(SV,2);
该标签已分类为1类。 我认为如果p为正,此功能将为1类,如果p为负,则此功能将为2类。 但是,我得到的p的值为负。 如何获得正确的价值?