sklearn.svm.SVC 参数说明

经常用到sklearn中的SVC函数,这里把文档中的参数翻译了一些,以备不时之需。

本身这个函数也是基于libsvm实现的,所以在参数设置上有很多相似的地方。(PS: libsvm中的二次规划问题的解决算法是SMO)。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=None,random_state=None)

参数:

l  C:C-SVC的惩罚参数C?默认值是1.0

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

l  kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’

0 – 线性:u’v

1 – 多项式:(gamma*u’*v + coef0)^degree

2 – RBF函数:exp(-gamma|u-v|^2)

3 –sigmoid:tanh(gamma*u’*v + coef0)

l  degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。

l  gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features

l  coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。

l  probability :是否采用概率估计?.默认为False

l  shrinking :是否采用shrinking heuristic方法,默认为true

l  tol :停止训练的误差值大小,默认为1e-3

l  cache_size :核函数cache缓存大小,默认为200

l  class_weight :类别的权重,字典形式传递。设置第几类的参数C为weight*C(C-SVC中的C)

l  verbose :允许冗余输出?

l  max_iter :最大迭代次数。-1为无限制。

l  decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3

l  random_state :数据洗牌时的种子值,int值

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

案例代码:#!/usr/bin/python# -*- coding:utf-8 -*-import numpy as npfrom sklearn import svmfrom scipy import statsfrom sklearn.metrics import accuracy_scoreimport matplotlib as mplimport matplotlib.pyplot as plt#设置画图过程中,图像的最小值 与最大值取值def extend(a, b, r):

x = a - b

m = (a + b) / 2

return m-r*x/2, m+r*x/2if __name__ == "__main__":

np.random.seed(0)

N = 20

x = np.empty((4*N, 2))

print("{}\n{}".format(x.shape,x))

means = [(-1, 1), (1, 1), (1, -1), (-1, -1)]

print(means)

sigmas = [np.eye(2), 2*np.eye(2), np.diag((1,2)), np.array(((2,1),(1,2)))]

print(sigmas)    for i in range(4):

mn = stats.multivariate_normal(means[i], sigmas[i]*0.3)        # print(mn)

x[i*N:(i+1)*N, :] = mn.rvs(N)        # print(mn.rvs(N))

a = np.array((0,1,2,3)).reshape((-1, 1))

print(a)

y = np.tile(a, N).flatten()

print(np.tile(a, N) )

print(y)

clf = svm.SVC(C=1, kernel='rbf', gamma=1, decision_function_shape='ovo')    # clf = svm.SVC(C=1, kernel='linear', decision_function_shape='ovr')

clf.fit(x, y)

y_hat = clf.predict(x)

acc = accuracy_score(y, y_hat)

np.set_printoptions(suppress=True)    print (u'预测正确的样本个数:%d,正确率:%.2f%%' % (round(acc*4*N), 100*acc))    # decision_function

print (clf.decision_function(x))    print (y_hat)

x1_min, x2_min = np.min(x, axis=0)

x1_max, x2_max = np.max(x, axis=0)

x1_min, x1_max = extend(x1_min, x1_max, 1.05)

x2_min, x2_max = extend(x2_min, x2_max, 1.05)

x1, x2 = np.mgrid[x1_min:x1_max:500j, x2_min:x2_max:500j]

x_test = np.stack((x1.flat, x2.flat), axis=1)

y_test = clf.predict(x_test)

y_test = y_test.reshape(x1.shape)

cm_light = mpl.colors.ListedColormap(['#FF8080', '#A0FFA0', '#6060FF', '#F080F0'])

cm_dark = mpl.colors.ListedColormap(['r', 'g', 'b', 'm'])

mpl.rcParams['font.sans-serif'] = [u'SimHei']

mpl.rcParams['axes.unicode_minus'] = False

plt.figure(facecolor='w')

plt.pcolormesh(x1, x2, y_test, cmap=cm_light)

plt.scatter(x[:, 0], x[:, 1], s=40, c=y, cmap=cm_dark, alpha=0.7)

plt.xlim((x1_min, x1_max))

plt.ylim((x2_min, x2_max))

plt.grid(b=True)

plt.tight_layout(pad=2.5)

plt.title(u'SVM多分类方法:One/One or One/Other', fontsize=18)

plt.show()

分类结果:

打开App,阅读手记

python svm参数_python SVM 案例,sklearn.svm.SVC 参数说明相关推荐

  1. 机器学习笔记:支持向量机(SVM)详细推导以及sklearn.svm.SVC的简单简介

    线性可分支持向量机: 举一个简单的例子: 我们需要将下面的圆圈和叉分开 这里存在无数多条线可以将圆圈和叉分开,因此,我们要规定一个性能指标,对于每一条线,都有对应的一个性能指标. 我们将每一条可以分开 ...

  2. python 启动参数_python启动参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...

  3. python魔法参数_python中的魔法参数:*args和**kwargs

    def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '------------------- ...

  4. python商业数据分析_Python数据分析案例—商圈客流量特征分析

    这是 python 数据分析案例系列的第二篇,主要是聚类分析,实现起来较为简单.后续还会继续更新,欢迎关注交流! 在处理实际的数据分析案例时,我们面临的往往是比较复杂的研究对象,如果能把相似的样品(或 ...

  5. gridsearchcv参数_Python机器学习库Sklearn系列教程(21)-参数优化

    (网格搜索GridSearchCV.随机搜索RandomizedSearchCV.hyperopt) 网格搜索GridSearchCV GridSearchCV用于系统地遍历多种参数组合,通过交叉验证 ...

  6. python可变参数_Python 的四种共享传参详解

    点击上方"Python数据之道",选择"星标公众号" 精品文章,第一时间送达 作者 | 杨仁聪 编辑 | Lemon 出品 | Python数据之道 本文来自公 ...

  7. python动态参数_python动态参数

    Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式. ...

  8. python 函数参数_python之函数(二)——函数参数详解

    今天,我们要学习的是函数中的一个重要的概念--参数. 废话不多说,直接进入正题,下面我们看一段简单代码: def add(a, b): # 1 形参 sum = a + b return sum a ...

  9. python海龟绘图_Python教学案例|海龟绘图三例

    说明:海龟绘图网上的案例非常多,网上百度一搜就可以找到各种各样的不同绘图参考代码,简单的有,难的有绘制梵高画.九大行星图等等,有需求的最好问度娘,简单又方便. 分享Python 基础教程: https ...

  10. python xgboost参数_Python中的XGBoost XGBClassifier默认值

    这不是在xgboost中设置参数的方式.您可以将参数网格传递到训练函数中,例如xgboost的train或sklearn的GridSearchCV,也可以使用XGBClassifier的set_par ...

最新文章

  1. 【Qt】Qt发布可执行程序(打包依赖库)
  2. PHP遍历用blade标签表示,php-Laravel Blade {{$variable或’Default Text’}}无法使用网址
  3. Rsync命令参数详解
  4. 磨刀——python及相关工具
  5. 深度学习 占用gpu内存 使用率为0_深度学习的完整硬件指南
  6. 在mysql中更改数据类型_如何在MySQL中更改列的数据类型?
  7. 分布式系统Kafka和ES中,JVM内存越大越好吗?
  8. interactive_timeout和wait_timeout之间的区别
  9. SAP CRM Enterprise Search 培训材料
  10. 怎么注销midas服务器程序,MIDAS的服务器镜像技术
  11. python arcgis 图书_arcgis python
  12. [html] iframe可以使用父页面中的资源吗(如:css、js等)?
  13. 【计算机网络复习】1.2.1 分层结构、协议、接口、服务
  14. Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)
  15. UE4的编译配置详解
  16. 注解形式控制器 数据验证,类型转换(3)
  17. 单变量微积分笔记8——最值问题和相关变率
  18. MyEclipse中使用Junit插件进行单元测试
  19. AD7124的调试总结
  20. 7大国内外自动驾驶仿真平台汇总

热门文章

  1. 三洋p6系列伺服电机说明书_松下A6系列驱动器电路板坏了维修_常州凌科自动化科技有限公司...
  2. 使用iconv进行GBK到BIG5编码转/简繁转换遇到的问题
  3. ae在哪里直接复制合成_AE脚本-合成复制脚本(同合成复制修改相互不影响)True Comp Duplicator v3.9.11+使用教程...
  4. 程序员转正答辩ppt
  5. pe中怎么卸载服务器系统更新,方法四: 使用专用工具卸载系统更新补丁(和方法三类同...
  6. 20210706_IEEEDataPort免费订阅
  7. 红帽社区内容需要订阅访问
  8. java digestutils.md5hex_linux下md5sum和DigestUtils.md5Hex的关系 博客分类: java
  9. 拼途网: 从线上到线下的拼途旅行社区
  10. pthread_cond_timedwait函数使用