我在观看一个YouTube视频来学习支持向量机(SVM)。在视频中,他提到SVM会寻找支持向量分类器(SVC)来划分数据,作为其分类过程中的一个步骤。
我使用了scikit-learn中的LinearSVC进行分类,但我很难理解scikit-learn中LinearSVC的实现到底是SVM还是SVC,或者视频中的描述是否有误。我在不同网站上发现了矛盾的描述。
- 这个问题的接受答案指出,LinearSVC不是SVM,但也没有说它是SVC。
- 在LinearSVC的描述页面上,它说的是“线性支持向量分类”,但在这个页面的“另见”部分,它说LinearSVC是“使用liblinear实现的可扩展线性支持向量机分类器”。
据我所知,LinearSVC和SVC(kernel=’linear’)是不一样的,但这不是问题所在。
回答:
在机器学习概念上,LinearSVC
两者皆是,因为:
SVM
是一种模型/算法,用于寻找一个平面来分割样本空间- 这可以用于分类(
SVC
)和回归(SVR
)——SVC
和SVR
都是SVM
的一种
因此,SVC
是SVM
的一种,而LinearSVC
看起来像是SVC的一种特定类型,尽管在scikit-learn
中没有扩展一个基础的SVC
类。
如果你指的是sklearn
的源代码——LinearSVC
位于svm
模块中…所以它是SVM。它没有扩展SVC
或BaseSVC
类,但对我来说这是一个实现问题/细节,我更愿意将其视为SVC。