From the documentation scikit-learn implements SVC, NuSVC and LinearSVC which are classes capable of performing multi-class classification on a dataset. By the other hand I also read about that scikit learn also uses libsvm for support vector machine algorithm. I'm a bit confused about what's the difference between SVC and libsvm versions, by now I guess the difference is that SVC is the support vector machine algorithm fot the multiclass problem and libsvm is for the binary class problem. Could anybody help me to understad the difference between this?.
What is the difference between SVC and SVM in scikit-learn?
Asked Answered
Also see the docstring: scikit-learn.org/stable/modules/generated/… SVC is just a thin wrapper around libsvm. –
Swerve
They are just different implementations of the same algorithm. The SVM module (SVC, NuSVC, etc) is a wrapper around the libsvm library and supports different kernels while LinearSVC
is based on liblinear and only supports a linear kernel. So:
SVC(kernel = 'linear')
is in theory "equivalent" to:
LinearSVC()
Because the implementations are different in practice you will get different results, the most important ones being that LinearSVC only supports a linear kernel, is faster and can scale a lot better.
They are actually not equivalent as SVC uses a one-vs-one strategy while LinearSVC uses a one-vs-rest strategy for multi-class. Also LinearSVC defaults to L2 loss aka squared hinge loss. –
Swerve
Andreas is right pointing out that they are not they same. When I said "equivalent" I meant "similar" or "corresponds to", sorry for my bad English. Different implementations means differing defaults and many other details. –
Armendariz
For multi-class classification what aproach do you guys recommend me (one vs one or one vs rest), do you think I can attack this problem nicely with SVC?. –
Nelia
actually LinearSVC is not SVM at all, see #33844481 –
Hydrogenolysis
This is a snapshot from the book Hands-on Machine Learning
© 2022 - 2024 — McMap. All rights reserved.