sklearn SVM原理与实现(附代码)

本文介绍了支持向量机(SVM)的基本概念,包括最大边距超平面和支持向量。详细解析了sklearn中SVM的参数,如C、kernel、degree、gamma等,并探讨了它们对模型的影响。文章还涵盖了SVM的OVR和OVO策略,并提供了sklearn库中SVM接口的使用方法。
摘要由CSDN通过智能技术生成

1.SVM简介

支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
SVM的基本思想是:找到集合边缘上的若干数据(称为支持向量(Support Vector)),用这些点找出一个平面(称为决策面),使得支持向量到该平面的距离最大。

2.SVM参数意义

在sklearn中,封装好各种机器学习的库,其中就包含SVM算法,其调用如下:

import sklearn.svm as svm
model = svm.SVC(C=1.0,
 kernel='rbf', 
degree=3, 
gamma='auto',
 coef0=0.0, 
shrinking=True,
 probability=False,
tol=0.001, 
cache_size=200, c
lass_weight=None, 
verbose=False, 
max_iter=-1, 
decision_function_shape=None,
random_state=None)

参数说明:
C:SVC的惩罚参数,默认值是1.0;C越大,对误分类的惩罚增大,趋向于对训练集完全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强

关于松弛变量,我这边要解释下:
在大多数情况下,数据并不是完美的线性可分数据,可能会存在少量的点出现在分类超平面的另外一侧。我们希望尽量保证将这些点进行正确分类,同时又保证分类面与两类样本点有足够大的几何间隔。在这种情况下,我们为每一个样本点加上一个松弛变量,允许有小的误差存在。在加入松弛变量后,我们还要在目标函数中加入相应的惩罚参数C,对这个松弛变量起到一个监督克制的作用。两者的关系,有点类似道家的阴阳制衡的关系,此消彼长。

kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
linear:线性分类器(C越大分类效果越好,但有可能会过拟合(default C=1))
poly:多项式分类器
rbf:高斯模型分类器(gamma值越小,分类界面越连续;gamma值越大,分类界面越“散”,分类效果越好,但有可能会过拟合。)
sigmoid:sigmoid核函数
具体可以参考:https://zhuanlan.zhihu.com/p/157722218
degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’。 如果gamma是’auto’,那么实际系数是1 / n_features。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值