How to solve error when using fitcsvm to replace svmtrain ?

There is error, when I try to replace svmtrain using fitcsvm as follow, anyone know how to solve it?
model = svmtrain(labelVecBinTrain,featureMatTrain,['-t 0 -b 1 -w1 1 ' '-w-1 ' num2str(unbalanced_weight) ]);
model = fitcsvm(labelVecBinTrain,featureMatTrain,['-t 0 -b 1 -w1 1 ' '-w-1 ' num2str(unbalanced_weight) ]);
Error using internal.stats.parseArgs
(line 42)
Wrong number of arguments.
Error in
classreg.learning.paramoptim.parseOptimizationArgs
(line 10)
[OptimizeHyperparameters,HyperparameterOptimizationOptions,~,RemainingArgs]
= internal.stats.parseArgs(...
Error in fitcsvm (line 339)
[IsOptimizing, RemainingArgs] =
classreg.learning.paramoptim.parseOptimizationArgs(varargin);
Error in mainAuthentication (line
224)
model =
fitcsvm(labelVecBinTrain,featureMatTrain,['-t
0 -b 1 -w1 1 ' '-w-1 '
num2str(unbalanced_weight) ]);

Respuestas (1)

Hi,
The error you are encountering is because 'fitcsvm' in MATLAB uses a different syntax for specifying options compared to the older 'svmtrain' function. The 'svmtrain' function accepts a string of options (like '-t 0 -b 1 -w1 1 -w-1 X'), but 'fitcsvm' uses name-value pair arguments for its options.
Here is how code can be adjusted to use 'fitcsvm':
% Define the weights
weights = ones(size(labelVecBinTrain));
weights(labelVecBinTrain == -1) = unbalanced_weight;
% Define the SVM model
model = fitcsvm(featureMatTrain, labelVecBinTrain, 'KernelFunction', 'linear', 'BoxConstraint', 1, 'Weights', weights);
In this code:
  • 'KernelFunction', 'linear' is equivalent to -t 0 in 'svmtrain'.
  • 'BoxConstraint', 1 is equivalent to -c 1 in 'svmtrain'.
  • 'Weights', weights is used to handle the unbalanced data, which is equivalent to -w1 1 -w-1 unbalanced_weight in 'svmtrain'.
Please note that 'fitcsvm' does not directly support the -b 1 option from 'svmtrain' which is for probability estimates. If you need probability estimates, predict function can be used with 'Probability',true option after training the model.
For more information on “fitcsvm”, the following resources may be helpful:
I hope this helps!

Categorías

Más información sobre MATLAB en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

Lin
el 14 de Oct. de 2021

Respondida:

el 12 de Jun. de 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by