Hi GMurtaza,
It looks like you're trying to train an SVM classifier using the fitcecoc function in MATLAB, but you're running into an error. Here are a few things to check and correct in your code:
- There's a small typo in your fitcecoc function call. The argument should be 'Verbose' instead of 'Verbos'. This typo might be causing part of the issue.
- Make sure that your trainingFeatures and trainingLabels are correctly formatted. Since you have 'ObservationsIn', 'columns', each column in trainingFeatures should represent a single observation. Double-check that your data is structured this way.
- When you set 'CrossVal', 'on', the function returns a cross-validated model rather than a single model. If you want to use cross-validation, you should use kfoldPredict to make predictions, instead of predict.
Here’s how you can adjust your code:
% Train the SVM classifier with ECOC
classifier_svm = fitcecoc(trainingFeatures, trainingLabels, ...
'Learners', 'svm', ...
'Coding', 'onevsall', ...
'ObservationsIn', 'columns', ...
'Verbose', 1); % Fixed the typo
% Extract features from the test images
testFeatures = activations(net, TestImgs, featureLayer, 'MiniBatchSize', 32);
% Predict labels for the test features
[predictedLabels_svm, scores_svm] = predict(classifier_svm, testFeatures);
% If you're using cross-validation, you should use kfoldPredict like this:
% predictedLabels_svm = kfoldPredict(classifier_svm);
Additional Tips:
- Decide if you want to use cross-validation. If you do, remember to use crossval to make a cross-validated model and then kfoldPredict for predictions.
- Ensure that trainingFeatures, trainingLabels, and testFeatures are all in the correct format and dimensions. This will help avoid any unexpected errors.