笔记:Scikit Learn中SVM实现
1、sklearn.svm模块
LinearSVC
:基于liblinear的SVMSVC
:基于libsvm的C-SVMNuSVC
:基于libsvm的C-SVMOneClassSVM
:非监督的异常值检测
2、sklearn.svm提供的SVC
官方文档中的定义的类:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
# class sklearn.svm.SVC(
# C=1.0,
# kernel=’rbf’,
# degree=3,
# gamma=’auto’,
# 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
# )
from sklearn.svm import SVC
其中比较重要的参数:
Parameters Type Default Description C float 1.0 C-SVC的惩罚参数。C越大,惩罚越大,趋向训练集全分对 kernel string ‘rbf’ 内核算法, 必须是’linear’,’poly’,’rbf’,’sigmoid’,’precomputed’或可调用的算法。 probability boolean False 是否启用概率估计。 decision_function_shape string ‘ovr’ 应用于多分类任务,只能选择’ovo’或’ovr’ 与模型复杂度相关的参数:
Parameters Type Default Description C float 1.0 C-SVC的惩罚参数。C越小,决策便捷越平滑,C越大,惩罚越大,趋向训练集全分对 kernel string ‘rbf’ 内核算法, 必须是’linear’,’poly’,’rbf’,’sigmoid’,’precomputed’或可调用的算法。 degree int 3 kernel为’poly’时的度 gamma float ‘auto’ 核’poly’,’rbf’,’sigmoid’的核系数 γ γ 。如果为默认’auto’使用“特征数分之一”代替。 coef0 float 0.0 核函数的独立指标 θ θ ,在’poly’与’sigmoid’中有意义 kernel(核函数):
‘linear’(线性核): k(x,x′)=xTx′ k ( x , x ′ ) = x T x ′
‘poly’(多项式核): k(x,x′)=(γxTx′+θ)degree k ( x , x ′ ) = ( γ x T x ′ + θ ) d e g r e e
‘rbf’(径向基函数): k(x,x′)=exp(−γ(x−x′)2) k ( x , x ′ ) = exp ( − γ ( x − x ′ ) 2 )
‘sigmoid’(sigmoid函数): k(x,x′)=tanh(γxTx′+θ) k ( x , x ′ ) = t a n h ( γ x T x ′ + θ )
自定义核函数
在kernel选择为’rbf’时,基于性能考虑,建议使用sklearn.grid_search.GridSearchCV
选择C和gamma的合适值。