位置: IT常识 - 正文

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

编辑:rootadmin
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教程)

  • 拼多多云闪付在哪里(拼多多云闪付在哪里找)

    拼多多云闪付在哪里(拼多多云闪付在哪里找)

  • 魅族17屏幕尺寸是多少(魅族17屏幕多大)

    魅族17屏幕尺寸是多少(魅族17屏幕多大)

  • 索爱蓝牙耳机一个响一个不响怎么办(索爱蓝牙耳机一代怎么样)

    索爱蓝牙耳机一个响一个不响怎么办(索爱蓝牙耳机一代怎么样)

  • 电脑一会不动就黑屏(电脑一会不动就死机)

    电脑一会不动就黑屏(电脑一会不动就死机)

  • 朋友验证是不是拉黑了(朋友验证是不是对方把你删了)

    朋友验证是不是拉黑了(朋友验证是不是对方把你删了)

  • 苹果xr能不能用5v2a的充电(苹果xr能不能用5w快充)

    苹果xr能不能用5v2a的充电(苹果xr能不能用5w快充)

  • 华为手机有红外线吗(华为手机有红外功能吗?当遥控器用)

    华为手机有红外线吗(华为手机有红外功能吗?当遥控器用)

  • 优酷上传视频审核要多久(优酷上传视频审核时间多久)

    优酷上传视频审核要多久(优酷上传视频审核时间多久)

  • 电脑小写英文字母按哪个键(电脑小写英文字母并大写按哪个指标)

    电脑小写英文字母按哪个键(电脑小写英文字母并大写按哪个指标)

  • 惠普bios要更新吗(惠普bios更新有什么好处)

    惠普bios要更新吗(惠普bios更新有什么好处)

  • 手机为什么突然特别卡(手机为什么突然变成黑白屏了)

    手机为什么突然特别卡(手机为什么突然变成黑白屏了)

  • windows是一种什么系统(windows是一种什么)

    windows是一种什么系统(windows是一种什么)

  • 4g8g内存条可以混用吗(内存条可以4g加8g吗)

    4g8g内存条可以混用吗(内存条可以4g加8g吗)

  • 高德用的北斗还是gps(高德地图使用的是北斗)

    高德用的北斗还是gps(高德地图使用的是北斗)

  • wps表格斜线一分为二怎么打字(wps表格斜线怎么弄)

    wps表格斜线一分为二怎么打字(wps表格斜线怎么弄)

  • 小米8一直重启循环怎么回事(小米8一直重启循环怎么解决)

    小米8一直重启循环怎么回事(小米8一直重启循环怎么解决)

  • 抖音点不了赞怎么回事(抖音点不了赞怎么办)

    抖音点不了赞怎么回事(抖音点不了赞怎么办)

  • vivo手机怎么开手电筒(vivo手机怎么开小窗口模式)

    vivo手机怎么开手电筒(vivo手机怎么开小窗口模式)

  • 勿扰模式微信电话会响吗(勿扰模式微信电话会被挂断吗)

    勿扰模式微信电话会响吗(勿扰模式微信电话会被挂断吗)

  • 人人影视怎么用(人人影视怎么用不了)

    人人影视怎么用(人人影视怎么用不了)

  • 苹果xsmax支持多少w快充(苹果xsmax支持多少瓦无线充电)

    苹果xsmax支持多少w快充(苹果xsmax支持多少瓦无线充电)

  • 虚拟机不能上互联网怎么办 VMware host-only模式上网配置的方法(虚拟机不能互相访问)

    虚拟机不能上互联网怎么办 VMware host-only模式上网配置的方法(虚拟机不能互相访问)

  • 经常便秘怎么办?(老年人经常便秘怎么办)

    经常便秘怎么办?(老年人经常便秘怎么办)

  • 补缴税款的会计怎么做账
  • 含税金额和开票金额
  • 纳税人财务会计报表报送管理办法
  • 外账成本倒推表格
  • 保险公司代收车船税在发票备注栏
  • 汇算清缴调增的金额,如何做会计分录
  • 开发商要求业主签借款合同
  • 中期票据怎么入账
  • 在登记账簿时,应在记账凭证上注明所记账簿的页数
  • 商场扣点收入如何纳税
  • 营改增后服务业增值税税率
  • 公司开业前期费用处理
  • 自建的固定资产入账价值具体包括哪些
  • 应交税费是什么科目借贷方向
  • 集团内部资产划转需要交增值税吗
  • 新成立的公司如何建账
  • 服务性合同签了能反悔吗
  • 注册资本变更增加意味着什么
  • 申报清单怎么写
  • 五年之内,企业可追补应扣支出
  • 注册资本印花税按实缴还是认缴
  • 向境外企业转让房产
  • 2021年购买车辆的进项税能抵扣吗
  • 如何打印word文档手机上
  • 实收资本怎么用
  • 企业取得财政拨款怎么算
  • 鸿蒙2.0正式版升级
  • 荣耀x10升级鸿蒙系统好用吗
  • 阻止电脑系统更新设置在哪
  • php实现功能
  • 阿布鲁佐的特点
  • vue聊天系统
  • vgchange命令
  • 理财产品利息计算方法
  • 企业没有研发费用怎么做账
  • 初学者应该看什么书
  • 公司人员工资计算方法
  • 公司向个人支付居间费用
  • sql server 排名函数
  • 缴纳以前年度房租的税
  • 企业所得税视同销售的有哪些?
  • 职工福利费的比例
  • 病假补贴需要什么手续
  • 海关进口增值税专用缴款书在哪里打印
  • 行政单位误餐费标准
  • 小规模纳税人劳务费税率
  • 采购商品的运费会计分录
  • 暂估入库后发票来不了会计分录
  • 税局代开专用发票时交的钱如何记账?
  • 股权转让如何支付利润
  • 进项税额转出怎么操作
  • sqlserver存储过程怎么查看
  • mac蓝牙连接iphone有什么用
  • 简单易上手 固态硬盘SSD安装WIN7系统的3种办法
  • 系统设置用户密码在哪里
  • window8更新10
  • win10系统怎么清理电脑垃圾
  • deepin直接安装
  • 苹果电脑支持的u盘格式
  • linux怎么禁用命令
  • centos7更改默认内核
  • xp电脑小游戏
  • PQV2ISECURITY.EXE - PQV2ISECURITY是什么进程 有什么用
  • 笔记本win8为什么不能连无线
  • win10系统预览版
  • 右键回收站一直转圈
  • android游戏开发框架
  • js实现日历可获得的信息
  • margin使用
  • python中生成随机小数的函数
  • vue配置api
  • unity3d 画线
  • JavaScript html5 canvas绘制时钟效果
  • 陕西省税务局机关服务中心
  • 北京西城税务局
  • 税务局自助终端
  • 在税盘上怎么申请电子发票
  • 车船税与船舶吨税法律制度ppt
  • 外贸公司销售额可以10亿以上吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设