sklearn里LinearSVC与SVC区别
这里综合了stackoverflow上的一位发言和另一位知乎用户的文章,链接在下方:
What is the difference between LinearSVC and SVC(kernel=”linear”)?
baiziyu:sklearn.svm.LinearSVC与sklearn.svm.SVC区别
LinearSVC 和 SVC(kernel=’linear’) 会产生不同的结果,例如 不同的分数以及不同的decision boundary, 原因是他们采用了不同的计算方式。下面的代码可以自己运行一下,感受一下不同的地方
1 | from sklearn.datasets import load_iris |
最主要的不同点:
- 默认情况下,LinearSVC最小化squared hinge loss,而SVC最小化hinge loss。(上图代码块)
- LinearSVC是基于liblinear实现的,事实上会惩罚截距(penalize the intercept), 然而,SVC是基于libsvm实现的,并不会惩罚截距
- liblinear库针对线性的模型进行了优化,因此在大量的数据上收敛速度会高于libsvm。所以LinearSVC在大数据上也能很好的归一化,但是SVC在大量数据上很难收敛
- LinearSVC使用 (One-vs-All)方式来实现多分类问题,但SVC使用的是One-vs-One的方式来处理多分类的问题
- Post title:sklearn里LinearSVC与SVC区别
- Post author:Yuxuan Wu
- Create time:2021-01-25 19:32:27
- Post link:yuxuanwu17.github.io2021/01/25/sklearn里LinearSVC与SVC区别/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.