sklearn-SVC实现与类参数详解


Posted in Python onDecember 10, 2019

sklearn-SVC实现与类参数

对应的API:http://scikit-learn.sourceforge.net/stable/modules/generated/sklearn.svm.SVC.html

它是基于libsvm实现的。随着样本数量的增加,拟合时间的复杂度要高于二次,这就使得当样板数量超过一万个时,很难扩展到数据集中。

在多类处理时,是按照1对1的方案进行处理的。

函数的的定义为:

def __init__ (self, C=1.0, kernel='rbf', degree=3, gamma='auto',coef0=0.0, 
verbose=False, max_iter=-1, decision_function_shape='ovr', random_state=None):

参数的含义:

- C:float参数 默认值为1.0。错误项的惩罚系数。C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低,也就是对测试数据的分类准确率降低。相反,减小C的话,容许训练样本中有一些误分类错误样本,泛化能力强。对于训练样本带有噪声的情况,一般采用后者,把训练样本集中错误分类的样本作为噪声。

- kernel: str参数 默认为‘rbf‘,算法中采用的核函数类型,可选参数有:

linear:线性核函数

poly:多项式核函数

rbf:径像核函数/高斯核

sigmod:sigmod核函数

precomputed:核矩阵

- degree :int型参数 (default=3),这个参数只对多项式核函数(poly)有用,是指多项式核函数的阶数n,如果给的核函数参数是其他核函数,则会自动忽略该参数。

- gamma:float参数,默认为auto核函数系数,只对'rbf'、 ‘poly' 、 ‘sigmoid'有效。

如果gamma为auto,代表其值为样本特征数的倒数,即1/n_features。

- coef0:float参数 默认为0.0

核函数中的独立项,只有对‘poly'和‘sigmod'核函数有用,是指其中的参数c

- probability:bool参数 默认为False

是否启用概率估计。 这必须在调用fit()之前启用,并且会fit()方法速度变慢。

- shrinking:bool参数 默认为True

是否采用启发式收缩方式。

- tol: float参数 默认为1e^-3

svm停止训练的误差精度。

- cache_size:float参数 默认为200

指定训练所需要的内存,以MB为单位,默认为200MB。 - class_weight:字典类型或者‘balance'字符串。默认为None

给每个类别分别设置不同的惩罚参数C,则该类别的惩罚系数为class_weight[i]*C,如果没有给,则会给所有类别都给C=1,即前面参数指出的参数C。

如果给定参数‘balance',则使用y的值自动调整与输入数据中的类频率成反比的权重。

- verbose :bool参数 默认为False

是否启用详细输出。 此设置利用libsvm中的每个进程运行时设置,如果启用,可能无法在多线程上下文中正常工作。一般情况都设为False,不用管它。

- max_iter :int参数 默认为-1

最大迭代次数,如果为-1,表示不限制

- random_state:int型参数 默认为None

伪随机数发生器的种子,在混洗数据时用于概率估计。

SVC的方法

1、fit()方法:用于训练SVM,具体参数已经在定义SVC对象的时候给出了,这时候只需要给出数据集X和X对应的标签y即可。

2、predict()方法:基于以上的训练,对预测样本T进行类别预测,因此只需要接收一个测试集T,该函数返回一个数组表示个测试样本的类别。

3、predict_proba():返回每个输入类别的概率,这与predict方法不同,predict方法返回的输入样本属于那个类别,但没有概率。使用此方法时,需要在初始化时,将 probability参数设置为True。

例如:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
# we create 40 separable points
np.random.seed(0)
X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
Y = [0] * 20 + [1] * 20
# fit the model
clf = svm.SVC(kernel='linear',probability=True)
clf.fit(X, Y)
print(clf.predict_proba([[-0.1,0.7],[0.3,0.5]]))
#result
#[[ 0.41844015 0.58155985]
#[ 0.34810738 0.65189262]]

如果初始化时不适用probability参数:

clf = svm.SVC(kernel='linear')
clf.fit(X, Y)
print(clf.predict([[-0.1,0.7],[0.3,0.5]]))
# get the separating hyperplane
w = clf.coef_[0]
#输出的结果为:[1,1]

属性有哪些:

svc.n_support_:各类各有多少个支持向量

svc.support_:各类的支持向量在训练样本中的索引

svc.support_vectors_:各类所有的支持向量

以上这篇sklearn-SVC实现与类参数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python模块学习 datetime介绍
Aug 27 Python
python实现k均值算法示例(k均值聚类算法)
Mar 16 Python
Python文件处理
Feb 29 Python
Python存取XML的常见方法实例分析
Mar 21 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
Python补齐字符串长度的实例
Nov 15 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
django实现用户注册实例讲解
Oct 30 Python
python return逻辑判断表达式实现解析
Dec 02 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
Python 使用dict实现switch的操作
Apr 07 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 Python
使用pandas 将DataFrame转化成dict
Dec 10 #Python
python基于TCP实现的文件下载器功能案例
Dec 10 #Python
使用pandas的box_plot去除异常值
Dec 10 #Python
Python 中如何实现参数化测试的方法示例
Dec 10 #Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 #Python
YUV转为jpg图像的实现
Dec 09 #Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 #Python
You might like
用穿越火线快速入门php面向对象
2012/02/22 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
理解JS事件循环
2016/01/07 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
工作试用期自我评价
2015/03/10 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS