sklearn.svm.SVC()函数解析
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=’ovr’, random_state=None)
C
:惩罚项参数,C越大, 对误分类的惩罚越大(泛化能力越弱)kernel
:核函数类型- ‘linear’:线性核函数 < x , x " > <x,x^"> <x,x">
- ‘poly’:多项式核函数 ( γ < x , x " > + c o e f 0 ) d (γ<x,x^">+coef0)^d (γ<x,x">+coef0)d, 其中d是有参数degree指定
- ‘rbf’: 高斯核函数 e x p ( − γ ∣ ∣ x − x " ∣ ∣ exp(-γ||x-x^"|| exp(−γ∣∣x−x"∣∣,其中γ是由参数gamma指定,必须大于0
- ‘sigmoid’: sigmod核函数 t a n h ( g a m m a ∗ < x , x " > + c o e f 0 ) tanh(gamma*<x,x^">+coef0) tanh(gamma∗<x,x">+coef0)
degree
:多项式核函数的阶数.gamma
: 核函数系数,默认为auto(代表其值为样本特征数的倒数), 只对’rbf’,‘poly’,'sigmod’有效.定义了单个训练样本有多大的影响力.一个大的gamma,其附近的其他样本一定会被影响到.class_weight
:{dict,‘balanced’},可选类别权重.decision_function_shape
:‘ovo’(默认,one vs one),‘ovr’(one vs reset).
使用技巧
支持向量机不能很好的容忍非标准化数据,所以强烈建议先将数据标准化后在训练.
数学公式
支持向量机在高维或无限维空间中构造平面或超平面集,可用于分类,回归或其他任务.
一个好的分离的实现方案是,超平面距离训练数据中任意一类的样本的距离达到最大(也称为函数间距)
下图显示一个线性可分问题的决策函数,边界有三个样本,称为"支持向量"
SVC
给定训练样本 x i ∈ R p , i = 1 , . . . , n x_i\in R^p,i=1,...,n xi∈Rp,i=1,...,n在二分类中, 和一个向量 y ∈ { 1 , − 1 } n y\in {\{1,-1\}}^n y∈{ 1,−1}