位置: IT常识 - 正文

Sklearn GridSearchCV跑SVM很慢或卡死解决办法,SVM线性核函数卡死

发布时间:2024-01-17
Sklearn GridSearchCV跑SVM很慢或卡死解决办法,SVM线性核函数卡死

推荐整理分享Sklearn GridSearchCV跑SVM很慢或卡死解决办法,SVM线性核函数卡死,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

今天跑人工智能SVM实验,想试一下线性核函数,结果卡死了,很久也不出结果,但之前使用高斯核函数是没问题的。历经千辛万苦终于找到了原因,记录一下,希望对后人有帮助。本人只是个做作业的小菜菜,如有不对欢迎指正!

参考了以下文章:

关于Python Sklearn SVM 为什么运行很慢得到结果的原因 https://blog.csdn.net/zhike5110/article/details/88878812

大致原因

SVM需要不断寻找最能区分数据的超平面,直至收敛。我们以线性(Linear)核函数为例,如果数据间有明显的线性关系时,SVM就能很快找到这个超平面,达到收敛。但如果数据间无明显的线性关系,即使数据量很小,也很难找到这个超平面,导致迟迟不收敛。具体解释请看上面附的原文章。

解决方法原代码

我原来的代码如下。使用的是线性核函数。

import timefrom sklearn.metrics import accuracy_scorefrom sklearn.metrics import f1_scorefrom sklearn.model_selection import train_test_splitfrom sklearn.model_selection import GridSearchCVfrom sklearn.svm import SVC# 读取训练集并切分X, Y = load_data() X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=0)# 参数parameters = [ { 'kernel': ['linear'], # 线性核函数 'C': [1 * 10**i for i in range(-3, 11)], 'class_weight': ['balanced'] #样本均衡度 }]# 参数调优 clf = GridSearchCV(estimator=SVC(), param_grid=parameters, cv=8, n_jobs=5, scoring='f1_macro')start = time.time()clf.fit(X_train, y_train)elapsed = time.time() - startprint("Fitting finished in %d min %d s" % (elapsed / 60, elapsed % 60))print("Best set score:{:.2f}".format(clf.best_score_))print("Best parameters:{}".format(clf.best_params_))print("Test set score:{:.2f}".format(clf.score(X_test, y_test)))

使用上面的参数跑了很久也不出结果,把参数组合数量调少也不行。

方法一:限制最大迭代次数

设置最大迭代次数参数max_iter。max_iter默认为-1,表示直至计算出收敛的超平面才停止。将其设为一个合适的正整数即可。

设置max_iter参数:

parameters = [ { 'kernel': ['linear'], # 线性核函数 'C': [1 * 10**i for i in range(-3, 11)], 'class_weight': ['balanced'], # 样本均衡度 'max_iter': [1000000] # 限制最多迭代1000000次 },]

跑了有5分多钟,得到结果:

方法二:改用其他的核函数Sklearn GridSearchCV跑SVM很慢或卡死解决办法,SVM线性核函数卡死

改用非线性的核函数,比如常用的高斯核函数(也叫径向基核函数)、多项式核函数,可能能够正常收敛。

采用高斯核函数(Radial Basis Function,RBF)

采用高斯核函数,参数如下:

parameters = [ { 'kernel': ['rbf'], # 高斯核函数 'C': [1 * 10**i for i in range(-3, 11)], 'gamma': [1 * 10**i for i in range(-10, 4)], 'class_weight': ['balanced'] # 样本均衡度 }]

参数组合数量翻倍了,需要耐心等待。训练时间56分钟,结果:

采用多项式核函数(Polynomial Kernel)

我又尝试了多项式核函数,但对于我的数据仍然不好收敛,因此,只好也加上max_iter参数:

parameters = [ { 'kernel': ['poly'],# 多项式核函数 'C': [1 * 10**i for i in range(-3, 11)], 'degree': range(2, 10), 'class_weight': ['balanced'], #样本均衡度 'max_iter': [1000000]# 限制最多迭代1000000次 }]

参数组合数量仍然比较多。训练时间85分钟。结果如下:

换核函数还是不行?

原因是不同的参数组合也会影响收敛的速度。比如在我的实验中,采用高斯核函数,如果gamma设置过小也迟迟不出结果。建议解决方法如下:

先使用少的参数组合数量,降低试错成本。先不要刚上来就设置过多的参数组合数量,要不然跑的太慢,你无法知道是正常在跑还是收敛慢了,最后跑了几个小时跑不出来才发现不对劲。如果用少量的参数组合很快跑出来了,就尝试加多参数组合数量,看还能不能跑出来;也可以设置一个较大的max_iter参数。这样的话能防止收敛慢的参数组合无限制地跑下去,正常收敛的参数组合也不会受影响。SVM教程推荐

推荐浙江大学胡浩基老师的SVM课程,讲的非常清楚:

浙大胡浩基老师SVM: https://www.bilibili.com/video/BV1jt4y1E7BQ/?spm_id_from=333.337.search-card.all.click&vd_source=44f1ad5d101e28cd116fe2918182d1b6

B站也有胡老师完整的机器学习课程视频,感兴趣的同学可以去找找。

本文链接地址:https://www.jiuchutong.com/zhishi/299197.html 转载请保留说明!

上一篇:ZED2跑ORB-SLAM3+双目相机、IMU联合标定+显卡驱动与cuda/cudnn安装

下一篇:【node进阶】浅析Koa框架---ejs模板|文件上传|操作mongoDB(node教程)

  • c++表白代码烟花(c++表白代码烟花ege图形库)

    c++表白代码烟花(c++表白代码烟花ege图形库)

  • 华为gt3pro屏幕分辨率(华为gt3pro功能)

    华为gt3pro屏幕分辨率(华为gt3pro功能)

  • oppo手机隐藏便签怎么找到(oppo手机隐藏便签信息怎么找到)

    oppo手机隐藏便签怎么找到(oppo手机隐藏便签信息怎么找到)

  • 打印机连接线(惠普打印机连接线)

    打印机连接线(惠普打印机连接线)

  • 为什么微信的聊天记录自动没了(为什么微信的聊天背景图片会很模糊)

    为什么微信的聊天记录自动没了(为什么微信的聊天背景图片会很模糊)

  • 腾讯课堂为什么看不了回放(腾讯课堂为什么要取消回放)

    腾讯课堂为什么看不了回放(腾讯课堂为什么要取消回放)

  • 小米wifi绑定微信未获得权限(小米wifi 绑定微信号怎么办)

    小米wifi绑定微信未获得权限(小米wifi 绑定微信号怎么办)

  • 荣耀9x是几g手机(荣耀9x是4g手机还是5g手机)

    荣耀9x是几g手机(荣耀9x是4g手机还是5g手机)

  • 华为锁屏密码忘记了怎么重置(华为锁屏密码忘了怎么重设)

    华为锁屏密码忘记了怎么重置(华为锁屏密码忘了怎么重设)

  • 苹果x屏幕边缘松动了(苹果手机左侧屏幕边缘失灵)

    苹果x屏幕边缘松动了(苹果手机左侧屏幕边缘失灵)

  • 抖音私聊删除怎么恢复(抖音私聊删除怎么找回聊天记录)

    抖音私聊删除怎么恢复(抖音私聊删除怎么找回聊天记录)

  • 苹果8p建议升级13.3.1系统吗(苹果8p建议升级15.7.1吗)

    苹果8p建议升级13.3.1系统吗(苹果8p建议升级15.7.1吗)

  • 苹果x黑屏无法唤醒(苹果x黑屏无法唤醒突然自己又恢复了)

    苹果x黑屏无法唤醒(苹果x黑屏无法唤醒突然自己又恢复了)

  • 华为b5手环怎么调时间(华为b5手环怎么戴耳朵视频)

    华为b5手环怎么调时间(华为b5手环怎么戴耳朵视频)

  • 网易云音乐历史播放在哪里(网易云音乐历史头像)

    网易云音乐历史播放在哪里(网易云音乐历史头像)

  • 华为手环只能华为手机用吗(华为手环只能华为手机吗)

    华为手环只能华为手机用吗(华为手环只能华为手机吗)

  • vivo手机无法自动锁屏(vivo手机无法自动对焦)

    vivo手机无法自动锁屏(vivo手机无法自动对焦)

  • vivox9互传在哪里打开(vivo x9互传在哪)

    vivox9互传在哪里打开(vivo x9互传在哪)

  • 淘宝卖家违规多久清零(淘宝卖家违规行为有哪些)

    淘宝卖家违规多久清零(淘宝卖家违规行为有哪些)

  • 打电话的时候录音了怎么找(打电话的时候录屏能录到声音吗)

    打电话的时候录音了怎么找(打电话的时候录屏能录到声音吗)

  • 自定义序列(自定义序列可以通过什么来建立)

    自定义序列(自定义序列可以通过什么来建立)

  • 孕妇不能吃哪些食物(图文),宝妈们请注意远离这些食物(孕妇不能吃哪些水果?)

    孕妇不能吃哪些食物(图文),宝妈们请注意远离这些食物(孕妇不能吃哪些水果?)

  • 盈利能力的概念及内容
  • 空调的折旧年限和残值率
  • 幼儿园个税怎么交
  • 收到以前年度的货款分录
  • 注册了公司没有经营会怎么样
  • 代开运输发票是否预征企业所得税?
  • 工伤一次性医疗补助金由谁支付
  • 安置残疾人就业税收优惠政策
  • 公司注销实收资本怎么处理
  • 递延所得税负债是什么意思
  • 提供应税服务营改增的应税服务不包括什么
  • 增值税发票红字发票怎么做凭证
  • 出租的固定资产计提折旧
  • 对外报价时应考虑哪些因素
  • 出售使用过的固定资产如何开票 备注
  • 调整已结转的税种有哪些
  • 个体工商户上月开发票超额了 ,定额改查账征收了
  • 销售人员发生的业务招待费
  • 员工疗养要扣公休假吗
  • 建筑施工企业清欠管理办法
  • 异地施工预缴税款会计分录
  • 小规模纳税人自开专票
  • 增值税纳税申报表在哪里查询
  • 滴滴开票是专票还是普票
  • 印花税减半再减半政策文件是什么
  • 城市垃圾处理项目
  • 一般纳税人免税申报表怎么填
  • 未开票收入是含税收入吗
  • uniapp分享图片
  • win10专业版激活密钥永久
  • 设备维修费增值税
  • 设计费和勘察费的会计科目
  • 股票股利和现金股利的共同点
  • win7系统中怎么找不到投影仪
  • php写接口实现json文件读取
  • 简易征收的分录
  • 已入账未抵扣的发票开红字发票
  • 股东借款作为项目资本金
  • php数组函数实现机选双色球
  • 提取企业发展基金用到银行存款科目吗
  • 最常用的成本核算方法表
  • 负债大于资产是逆差还是顺差
  • 查看zip文件命令
  • 进项抵销项的会计分录
  • 会计账的银行存款与银行存款不一致 是属于账账不符吗
  • 给最爱的他
  • 个税系统有什么用
  • 2020信息采集
  • 盈利性学校收到财政补贴要缴企业所得税吗
  • 软件开发公司如何保护源码
  • 2022最新款带采集功能抖音壁纸小程序源码
  • sqlserver游标的使用
  • 地方水利建设基金减免政策2023
  • 账面价值与计税基础的区别和联系
  • 移动怎么开当月发票
  • 上下班出车祸公司怎么赔偿
  • 固定资产计提折旧是什么意思
  • 纳税人在工作
  • 外派国外的员工享受国内法定假期吗
  • 进项税额准予抵扣是什么意思
  • 产权转移书据纳税义务时间
  • 局域网 下载
  • ie10怎么设置ie8兼容模式
  • win1020h2版好不好
  • win1020h2版本千万别更新
  • 博通网卡驱动win7
  • win10 windows设置
  • win10手写输入法怎么设置
  • 安卓开发框架mvvm
  • linux 删除inode
  • input输入@弹出框
  • node.js异步编程
  • angularjs2
  • js中的函数怎么使用
  • android 属性动画原理
  • android 实例教程
  • android局部界面切换
  • 个人所得税子女教育和赡养老人抵扣多少税
  • 城镇土地使用税的计算公式
  • 邳州国税局副局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号