one vs one svm multiclass classification matlab code
19 views (last 30 days)
Show older comments
Here is my code for one-vs-one. This code not written by @amro. I can't understand why this happening. Everything looks very simple when I studied code. Please help me to fix it. I am using matlab2014a.
Code : One vs One
%# load dataset
load fisheriris
[g gn] = grp2idx(species); %# nominal class to numeric
%# split training/testing sets
[trainIdx testIdx] = crossvalind('HoldOut', species, 1/3);
pairwise = nchoosek(1:length(gn),2); %# 1-vs-1 pairwise models
svmModel = cell(size(pairwise,1),1); %# store binary-classifers
predTest = zeros(sum(testIdx),numel(svmModel)); %# store binary predictions
%# classify using one-against-one approach, SVM with 3rd degree poly kernel
for k=1:numel(svmModel)
%# get only training instances belonging to this pair
idx = trainIdx & any( bsxfun(@eq, g, pairwise(k,:)) , 2 );
%# train
svmModel{k} = svmtrain(meas(idx,:), g(idx),'-s 0 -t 0');
%# test
predTest(:,k) = svmclassify(svmModel{k}, meas(testIdx,:));
end
pred = mode(predTest,2); %# voting: clasify as the class receiving most votes
%# performance
cmat = confusionmat(g(testIdx),pred);
acc = 100*sum(diag(cmat))./sum(cmat(:));
fprintf('SVM (1-against-1):\naccuracy = %.2f%%\n', acc);
fprintf('Confusion Matrix:\n'), disp(cmat)
Error:
Reference to non-existent field 'SupportVectors'.
Error in svmclassify (line 60)
if size(sample,2)~=size(svmStruct.SupportVectors,2)
Error in test_onevsone (line 21)
predTest(:,k) = svmclassify(svmModel{k}, meas(testIdx,:));
I also try,
svmModel{1}.SupportVectors
And it's looks like SupportVectors is not available in structure.
Some one please fix this bug... Thank you..
0 Comments
Answers (1)
vianney p
on 6 Jun 2016
the error is in this line svmModel{k} = svmtrain(meas(idx,:), g(idx),'-s 0 -t 0');
you need to verify the parameters for the function svmtrain. If you use svmModel{k} = svmtrain(meas(idx,:), g(idx)) it works.
0 Comments
See Also
Categories
Find more on Classification in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!