scikit-learn 中的 SVC 和 SVM 有什么区别?

What is the difference between SVC and SVM in scikit-learn?

来自 documentation scikit-learn 实现 SVC、NuSVC 和 LinearSVC,它们 classes 能够对数据集执行多class class化。另一方面,我也读到了 scikit learn 也使用 libsvm 作为支持向量机算法。我对 SVC 和 libsvm 版本之间的区别有点困惑,现在我想区别在于 SVC 是多 class 问题的支持向量机算法,而 libsvm 是二进制 class 问题。谁能帮我理解一下这两者的区别?

它们只是同一算法的不同实现。 SVM 模块(SVC、NuSVC 等)是 libsvm library and supports different kernels while LinearSVC is based on liblinear 的包装器,仅支持线性内核。所以:

SVC(kernel = 'linear')

理论上"equivalent"为:

LinearSVC()

由于实践中的实现不同,您会得到不同的结果,最重要的是 LinearSVC 仅支持线性内核,速度更快,并且可以更好地扩展。

这是本书的快照 Hands-on 机器学习