В чем разница между SVC и SVM в scikit-learn?

с документация scikit-learn реализует SVC, NuSVC и LinearSVC, которые являются классами, способными выполнять классификацию нескольких классов в наборе данных. С другой стороны, я также читал о том, что scikit learn также использует libsvm для поддержки векторного машинного алгоритма. Я немного смущен тем, в чем разница между версиями SVC и libsvm, к настоящему времени я думаю, что разница в том, что SVC-это алгоритм поддержки векторной машины для многоклассовой проблемы, а libsvm-для проблема двоичного класса. Может ли кто-нибудь помочь мне понять разницу между этим?.

1 ответов


Это просто разные реализации одного и того же алгоритма. Модуль SVM (SVC, NuSVC и т. д.) является оболочкой вокруг libsvm библиотеки и поддерживает различные ядра, в то время как LinearSVC на основе liblinear и поддерживает только линейного ядра. Итак:

SVC(kernel = 'linear')

теоретически "эквивалентно":

LinearSVC()

поскольку реализации отличаются на практике, вы получите разные результаты, наиболее важными из которых являются LinearSVC поддерживает только линейное ядро, быстрее и может масштабироваться намного лучше.