How to solve error when using fitcsvm to replace svmtrain ?

2 Ansichten (letzte 30 Tage)
Lin
Lin am 14 Okt. 2021
Beantwortet: Vatsal am 12 Jun. 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) ]);

Antworten (1)

Vatsal
Vatsal am 12 Jun. 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!

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by