web-dev-qa-db-fra.com

Quelle est la différence entre SVC et SVM dans scikit-learn?

De la documentation scikit-learn implémente SVC, NuSVC et LinearSVC qui sont des classes capables d'effectuer une classification multi-classe sur un ensemble de données. Par ailleurs, j'ai également lu que scikit learn utilise également libsvm pour prendre en charge l'algorithme de machine vectorielle. Je suis un peu confus quant à la différence entre les versions SVC et libsvm, maintenant je suppose que la différence est que SVC est l'algorithme de machine vectorielle de support pour le problème multiclasse et libsvm est pour le problème de classe binaire. Quelqu'un pourrait-il m'aider à comprendre la différence entre cela?.

25
tumbleweed

Ce ne sont que des implémentations différentes du même algorithme. Le module SVM (SVC, NuSVC, etc.) est un wrapper autour de la bibliothèque libsvm et prend en charge différents noyaux tandis que LinearSVC est basé sur liblinear et ne prend en charge qu'un noyau linéaire. Alors:

SVC(kernel = 'linear')

est en théorie "équivalent" à:

LinearSVC()

Parce que les implémentations sont différentes dans la pratique, vous obtiendrez des résultats différents, les plus importants étant que LinearSVC ne prend en charge qu'un noyau linéaire, est plus rapide et peut évoluer beaucoup mieux.

24
elyase