How to solve error when using fitcsvm to replace svmtrain ?

2 vues (au cours des 30 derniers jours)
Lin
Lin le 14 Oct 2021
Réponse apportée : Vatsal le 12 Juin 2024
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) ]);

Réponses (1)

Vatsal
Vatsal le 12 Juin 2024
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!

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by