Luke
Luke

Reputation: 53

Matlab: make predictions with SVM for multiclass classification problems

I am trying to use a Support Vector Machine to classify my data in 3 classes. I used this Matlab function to train and cross-validate the SVM:

Mdl = fitcecoc(XTrain, yTrain, 'Learners', 'svm', 'ObservationsIn', 'rows', ...
   'ScoreTransform', 'invlogit','Crossval','on', 'Holdout', 0.2);

where XTrain contains all of my data and yTrain is a cell containing the names of each class to be assigned to the input data in XTrain. The function above returns to me:

Mdl --> 1x1 ClassificationPartitionedECOC

My question is, what function do I have to use in order to make predictions using new data? In the case of binary classification, I build the SVM with 'fitcsvm' and then I predicted the labels with:

[label, score] = predict(Mdl, XTest);

However, if I feed the ClassificationPartitionedECOC to the 'predict' function, it gives me this error:

No valid system or dataset was specified.

I haven't been able to find a function that allows me to perform prediction starting from the model format that I have, ClassificationPartitionedECOC. Thanks for any help you may provide!

Upvotes: 1

Views: 1621

Answers (1)

Marouen
Marouen

Reputation: 945

You can access the learner i through:

Mdl.BinaryLearners{i}

Because fitcecoc just trains a binary classifier like you would do with fitCSVM in a one versus one fashion.

Upvotes: 1

Related Questions