官方链接
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
poly:多项式核函数 (gamma*u'*v + coef0)^degree
rbf:径向基函数 exp(-gamma|u-v|^2)
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' 的核系数。
|
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页
二、参数优化(网格搜索+粒子群优化算法)
此处我们采用网格搜索+粒子群优化算法对支持向量机进行优化
先采用网格搜索进行大致范围搜索,然后利用粒子群优化算法进行详细优化