sklearn中的支持向量机SVC

sklearn中的支持向量机SVC_第1张图片

 官方链接

sklearn.svm.SVC — scikit-learn 1.0.2 documentationhttps://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC该方法是基于libsvm(支持向量机库)实现的

libsvm官网

LIBSVM -- A Library for Support Vector MachinesAn integrated and easy-to-use tool for support vector classification and regressionhttps://www.csie.ntu.edu.tw/~cjlin/libsvm/

在官方文档中说明该SVC适合万个样本数据集

如果超过万个样本数据集,即对于大型数据集,考虑使用LinearSVCor SGDClassifier代替

一、参数介绍

1.1重点参数介绍

该SVC重要的参数就是核函数kernel

kernel,提供的可选参数有

{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} or callable, 默认=’rbf’

linear:线性核函数  u'v

sklearn中的支持向量机SVC_第2张图片

poly:多项式核函数  (gamma*u'*v + coef0)^degree

sklearn中的支持向量机SVC_第3张图片

 rbf:径向基函数  exp(-gamma|u-v|^2)

sklearn中的支持向量机SVC_第4张图片

sigmoid:sigmoid核函数 tanh(gamma*u'*v + coef0)

precomputed:

1.2其他参数(主要调节参数)

主要调节的参数有:C、kernel、degree、gamma、coef0。

参数 参数说明
C

默认=1.0

正则化参数。正则化的强度与 C 成反比。必须严格为正。罚分是平方 l2 罚分。

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
kernel
见1.1
degree
多项式核函数 ('poly') 的度数。被所有其他内核忽略。
gamma

{'scale', 'auto'} 或浮点数,默认 ='scale'

'rbf'、'poly' 和 'sigmoid' 的核系数。

  • 如果gamma='scale'(default) 被传递,那么它使用 1 / (n_features * X.var()) 作为 gamma 的值,

  • 如果是“自动”,则使用 1 / n_features。

coef0

默认=0.0

核函数中的独立项。它仅在“poly”和“sigmoid”中有意义。

 补充:

对于多分类学习需要设置decision_function_shape参数

{'ovo','ovr'},默认='ovr'

是否像所有其他分类器一样返回形状为 (n_samples, n_classes) 的一对一 ('ovr') 决策函数,或者返回具有形状 (n_samples) 的 libsvm 的原始一对一 ('ovo') 决策函数, n_classes * (n_classes - 1) / 2)。然而,一对一('ovo')总是被用作多类策略。对于二元分类,该参数被忽略。

如需详细解释请查看周志华的《机器学习》清华出版社第63页

sklearn中的支持向量机SVC_第5张图片

 sklearn中的支持向量机SVC_第6张图片

 二、参数优化(网格搜索+粒子群优化算法)

此处我们采用网格搜索+粒子群优化算法对支持向量机进行优化

先采用网格搜索进行大致范围搜索,然后利用粒子群优化算法进行详细优化

你可能感兴趣的:(python,机器学习,SVC,支持向量机,网格搜索,粒子群优化算法)