SVM我们之前介绍过,根据数据样本点是否线性可分,可将其分为线性模型和非线性模型两大类。今天我们主要看下在scikit-learn中SVM是如何实现的。
线性SVM
在scikit-learn中的代码如下所示:
老规矩,我们只看一些之前没有介绍过的参数。
第1个参数:loss
该参数指我们选择什么样的损失函数。默认为squared_hinge,即合页损失函数的平方;还有一个选择是hinge,即合页损失函数。
至于其他参数,我们在之前的Logistic算法中都已经介绍过,大家可以进行参考,这里不再赘述。
非线性SVM
非线性的SVM就是添加了核函数,我们来看看如何用代码实现:
我们还是只介绍新出现的一些参数:
第1个参数:cache_size
该参数指缓存大小,默认为200,单位MB。
第2个参数:coef0
指核函数的常数项,仅对poly多项式核函数和sigmoid感知机核函数生效。
第3个参数:decision_function_shape
指决策函数的类型,默认为ovr,意为一对多;也可选择ovo,意为一对一。
第4个参数:degree
指使用poly多项式核函数时的维度,其他核函数没有此参数。
第5个参数:gamma
指各种核函数的系数,默认为auto,即系数为1/n(n为特征数)。
第6个参数:kernel
指采用的核函数的类型。默认为rbf,即高斯核函数。此外,你还可以选择linear(线性核函数)、poly(多项式核函数)、sigmoid(多层感知机核函数)和precomputed(已提供核矩阵)。
第7个参数:max_iter
指最大迭代次数,默认为-1,无限制。
第8个参数:probability
指是否使用概率来估计,默认为False,即不使用概率估计。
第9个参数:shrinking
指是否采用启发式(shrinking heuristics)方法,默认为True。
领取专属 10元无门槛券
私享最新 技术干货