Question

To understand well the concept behind how Support Vector Machine works in MATLAB, I advised you to read briefly THIS VERY IMPORTANT LINK.

I am trying to apply the same concept but I have different train set and test set.

For more precision:

My train set refers to be named as C2res{1} where this last is equal to:

 C2res{1} =

           1.0e-05 *

          Columns 1 through 10

            0.5341    0.5822    0.6185    0.7555    0.7369    0.7131    0.5985    0.6483    0.5668    0.6620

          Columns 11 through 12

            0.6523    0.6097  

My test set refers to be named as C2res{2} where this last has the same form of C2res{1} but with different values...

Then, I used the concept used in the above link:

XTrain = [C2res{1}];
XTest = [C2res{2}];
label = [ones(size(C2res{1},2),1)];
SVMStruct = svmtrain(XTrain , label, 'kernel_function', 'linear');
Group       = svmclassify(SVMStruct, XTest);

But unfortunately I always get errors like as:

Error using svmtrain (line 335)
Y must contain exactly two groups for method 'SMO'.

That is why I need your help please.

Any help will be very appreciated!

Was it helpful?

Solution

Are you trying to implement the classification training with two classes? Your label = [ones(size(C2res{1},2),1)]; contains only one value, and it seems to be expected two values (as two categories). I think that's the reason the error comes out.

If you are applying one-class SVM, try to add such option (see this page for more references on the option):

SVMStruct = svmtrain(XTrain , label,'-t 0 -s 2');
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top