接上篇的内容,相信大家已经对 SVM 已有些了解,关于 SVM 的公式推导可参考李航《统计学习方法》第七章,讲的非常清楚,这里我就不展开讲了。今天给大家带来的是 Sklearn 中的 SVM 参数介绍及简单应用。
先来回顾一些基本的概念:
线性/非线性线性是指量与量之间按比例,成直线关系,在数学上可理解为一阶导数为常数的函数;而非线性是指不按比例,不成直线关系,一阶导数不为常数的函数。
线性可分/不可分对于二分类问题,有那么一条直线可以把正负实例点完全分开,这些数据就是线性可分的;而线性不可分就是找不到一条直线可以把正负实例点完全分开。
超平面其实就是实例点从二维空间转移到三维甚至多维空间中,这个时候不能再用直线划分,而需要用平面去划分数据集,这个平面就称为超平面。
支持向量在线性可分的情况下,训练数据集的样本点与分离超平面距离最近的样本点称为支持向量,而支持向量机的目的就是求取距离这个点最远的分离超平面,这个点在确定分离超平面时起着决定性作用,所以把这种分类模型称为支持向量机。
sklearn 提供了很多模型供我们使用,包括以下几种:
可以看到 SVM 在 sklearn 上有三个接口(这里我只介绍分类方法),分别是 LinearSVC、SVC 和 NuSVC。最常用的一般是 SVC 接口。除了特别表明是线性的两个类 LinearSVC 和 LinearSVR 之外,其他的所有类都是同时支持线性和非线性的。NuSVC 和 NuSVC 可以手动调节支持向量的数目,其他参数都与最常用的 SVC 和 SVR 一致。而 OneClassSVM 则是无监督的类。
SVC
SVC 的 sklearn 接口
class sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto_deprecated’, coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape&#