sklearn GridSearchCV网格搜索和SVM的两个参数 C 和 gamma

2023-11-06

GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。GridSearchCV用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。

引用自:公众号: 写bug的程旭源
个人博客: 写bug的程旭源

常用参数解读:
estimator:所使用的分类器,如estimator=RandomForestClassifier(min_samples_split=100,min_samples_leaf=20,max_depth=8,max_features=‘sqrt’,random_state=10), 并且传入除需要确定最佳的参数之外的其他参数。每一个分类器都需要一个scoring参数,或者score方法。
param_grid:值为字典或者列表,即需要最优化的参数的取值,param_grid =param_test1,param_test1 = {‘n_estimators’:range(10,71,10)}。
scoring :准确度评价标准,默认None,这时需要使用score函数;或者如scoring=‘roc_auc’,根据所选模型不同,评价准则不同。字符串(函数名),或是可调用对象,需要其函数签名形如:scorer(estimator, X, y);如果是None,则使用estimator的误差估计函数。
cv :交叉验证参数,默认None,使用三折交叉验证。指定fold数量,默认为3,也可以是yield训练/测试数据的生成器。
refit :默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。
iid:默认True,为True时,默认为各个样本fold概率分布一致,误差估计为所有样本之和,而非各个fold的平均。
verbose:日志冗长度,int:冗长度,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出。
n_jobs: 并行数,int:个数,-1:跟CPU核数一致, 1:默认值。
pre_dispatch:指定总共分发的并行任务数。当n_jobs大于1时,数据将在每个运行点进行复制,这可能导致OOM,而设置pre_dispatch参数,则可以预先划分总共的job数量,使数据最多被复制pre_dispatch次
常用方法:
grid.fit():运行网格搜索
grid_scores_:给出不同参数情况下的评价结果
best_params_:描述了已取得最佳结果的参数的组合
best_score_:成员提供优化过程期间观察到的最好的评分

SVM模型有两个非常重要的参数C与gamma。其中 C是惩罚系数,即对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。C越小,容易欠拟合。C过大或过小,泛化能力变差
gamma是选择RBF函数作为kernel后,该函数自带的一个参数。隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。

此外大家注意RBF公式里面的sigma和gamma的关系如下:
在这里插入图片描述
这里面大家需要注意的就是gamma的物理意义,大家提到很多的RBF的幅宽,它会影响每个支持向量对应的高斯的作用范围,从而影响泛化性能。
我的理解:如果gamma设的太大,会很小,很小的高斯分布长得又高又瘦,
会造成只会作用于支持向量样本附近,对于未知样本分类效果很差,存在训练准确率可以很高,
(如果让无穷小,则理论上,高斯核的SVM可以拟合任何非线性数据,但容易过拟合)而测试准确率不高的可能,
就是通常说的过训练;而如果设的过小,则会造成平滑效应太大,无法在训练集上得到特别高的准确率,也会影响测试集的准确率。

此外,可以明确的两个结论是:
结论1:样本数目少于特征维度并不一定会导致过拟合,这可以参考余凯老师的这句评论:
“这不是原因啊,呵呵。用RBF kernel, 系统的dimension实际上不超过样本数,与特征维数没有一个trivial的关系。”

结论2:RBF核应该可以得到与线性核相近的效果(按照理论,RBF核可以模拟线性核),可能好于线性核,也可能差于,但是,不应该相差太多。
当然,很多问题中,比如维度过高,或者样本海量的情况下,大家更倾向于用线性核,因为效果相当,但是在速度和模型大小方面,线性核会有更好的表现。

rbf实际是记忆了若干样例,在sv中各维权重重要性等同。线性核学出的权重是feature weighting作用或特征选择 。

Grid Search
Grid Search是用在Libsvm中的参数搜索方法。很容易理解:就是在C,gamma组成的二维参数矩阵中,依次实验每一对参数的效果。使用grid Search虽然比较简单,而且看起来很naïve。但是他确实有两个优点:
可以得到全局最优
(C,gamma)相互独立,便于并行化进行

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn GridSearchCV网格搜索和SVM的两个参数 C 和 gamma 的相关文章

  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • 十六进制的转换为十进制两种常见方法

    十六进制的转换为十进制两种常见方法 好久以前学的都忘了 正好复习一下 对于十六进制转十进制 第一种 快速法 自己挺喜欢第一种的快捷 比如 012A 0 X 163 1 X 162 2 X 161 10 X 160 298 说明 当中的十六进
  • VS2010中 C++创建DLL图解

    一 DLL的创建 创建项目 Win32 gt Win32项目 名称 MyDLL 选择DLL D gt 完成 1 新建头文件testdll h testdll h代码如下 ifndef TestDll H define TestDll H i
  • postgresql客户名称脱敏

    脱敏规则 1个字符 不脱敏 2个字符 后一个字符脱敏 3个字符 中间一个字符脱敏 4个字符 中间两个字符脱敏 超过4个字符 认为是政企客户 不做脱敏处理 postgresql函数实现 CREATE OR REPLACE FUNCTION f
  • 决策树的初体验

    接下来是三种经典的决策树算法的学习过程 Step1 信息熵与信息增益 信息熵 information entropy 是度量样本集合纯度最常用的一种指标 假定当前样本集合D中第k类样本所占的比例为pk k 1 2 y 则D的信息熵定义为 E
  • 正则表达式验证邮箱格式

    需满足的验证逻辑 之前必须有内容且只能是字母 大小写 数字 下划线 减号 点 和最后一个点 之间必须有内容且只能是字母 大小写 数字 点 减号 且两个点不能挨着 最后一个点 之后必须有内容且内容只能是字母 大小写 数字且长度为大于等于2个字
  • 使用postman做接口测试实战

    一 准备 1 postman工具 2 搭建被测系统服务 3 fiddler抓包工具 说明 本此实战测试是在完成前台界面开发后进行的 接口是通过fiddler抓包获取的 如果没有完成系统前台开发 以项目组输入的接口为准进行测试也是一样的原理
  • 博世BMA400传感器API (中文说明)

    前言 最近项目中要使用BMA400 sensor 为了以后查找 这里只是对API进行翻译 有些地方翻译可能出错 请指出来一起探讨 谢谢各位看官 BMA 400数据手册 https download csdn net download qq
  • 五种方法,教你如何在Mac上查看文件完整路径

    在MacOS上 Finder显示文件默认是不带路径展示的 你进入某个文件夹只会显示文件夹的名称而已 如下图 那如何获取或者显示文件的完整路径呢 在MacOS中有五种方法可以显示文件完整路径 第一种 使用 终端 Terminal获取文件完整路
  • Numpy 索引

    整数索引 一般形式 arr frist dim index second dim index nth dim index x np array 1 2 3 4 5 6 7 8 print x 2 3 y np array 11 12 13
  • 安卓图片裁剪之Android-Image-Cropper简单使用

    图片裁剪是一个相对用的比较多的功能 正好近期用到了 于是在最新的ChatGPT上询问了一番 两次询问 得到的最优推荐依然是 Android Image Cropper 经过一番研究使用 确实简单好用 直接看代码 首先 你需要引入依赖 dep
  • 吊打面试官系列之:我这样回答 “如何更高效的进行接口测试“,面试官果然跪了。

    高效的进行接口测试 1 引言 2 什么是接口测试 3 为什么要做接口测试 4 接口测试的范围 5 接口测试的重点 6 接口测试原则 6 1 基本原则 6 2 关键原则 6 2 其他原则 6 2 1 系统角度 7 接口测试常用工具 8 总结
  • ECCV2016 paper list (完整版)

    摘自ECCV2016的会议论文 Oral Session 1A Detection Recognition Retrieval Tuesday October 11 09 00 10 00 Chairs Bernt Schiele MPI
  • 牛客网SQL刷题四-电商场景(某东商城)

    SQL13 计算商城中2021年每月的GMV 数据 DROP TABLE IF EXISTS tb order overall CREATE TABLE tb order overall id INT PRIMARY KEY AUTO IN
  • ByteTrack 多目标跟踪 测试笔记

    目录 多目标跟踪2022个人汇总知识 Results on MOT challenge test set ByteTrack 简介 转自知乎 1 Motivation 2 byte原理
  • minicom 没有tx 信号

    在minicom s 的配置中 Serial port setup 选择F Hardware Flow Control No默认是yes 但是没有tx信号输出 改为no 后使用正常
  • 配置Docker本地镜像仓库

    1 需要先创建一个registry ui目录 存放地址随意你自己记得就行 mkdir registry ui 2 在registry ui中创建一个docker compose yml文件 touch docker compose yml
  • 【PTA】谷歌的招聘

    2004 年 7 月 谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌 如下图 用于招聘 内容超级简单 就是一个以 com 结尾的网址 而前面的网址是一个 10 位素数 这个素数是自然常数 e 中最早出现的 10 位连续数字 能找出这个
  • C语言函数大全-- t 开头的函数

    t 开头的函数 1 tan tanf tanl 1 1 函数说明 1 2 演示示例 1 3 运行结果 2 tanh tanhf tanhl 2 1 函数说明 2 2 演示示例 2 3 运行结果 3 tell 3 1 函数说明 3 2 演示示
  • MyBatis高级

    文章目录 一 动态sql 1 if 2 choose when otherwise 3 where 4 set 5 foreach 6 trim 7 Sql片段 二 分页 1 分页的使用步骤 1 1 导入maven依赖 2 mybatis配
  • sklearn GridSearchCV网格搜索和SVM的两个参数 C 和 gamma

    GridSearchCV 它存在的意义就是自动调参 只要把参数输进去 就能给出最优化的结果和参数 GridSearchCV用于系统地遍历多种参数组合 通过交叉验证确定最佳效果参数 引用自 公众号 写bug的程旭源 个人博客 写bug的程旭源