专栏首页Python小屋Python+sklearn使用三种交叉验证方法评估模型泛化能力

Python+sklearn使用三种交叉验证方法评估模型泛化能力

封面图片:《Python程序设计实验指导书》,董付国,清华大学出版社

==============

本文使用的数据集格式请参考:使用Python预处理机器学习需要的手写体数字图像文件数据集

==============

在使用机器学习算法时往往会使用sklearn.model_selection模块中的函数train_test_split()把拿到的数据集划分为训练集和测试集,使用模型的fit()方法在训练集上进行训练,然后再使用模型的score()方法在测试集上进行评分。

使用上述方法对模型进行评估,容易因为数据集划分不合理而影响评分结果,从而导致单次评分结果可信度不高。这时可以使用不同的划分多评估几次,然后计算所有评分的平均值。

交叉验证(Cross Validation)正是用来完成这个任务的技术,该技术会反复对数据集进行划分,并使用不同的划分对模型进行评分,可以更好地评估模型的泛化质量。

扩展库sklearn在model_selection模块中提供了用来实现交叉验证的函数cross_val_score(),其语法为:

cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs')

其中,1)参数estimator用来指定要评估的模型;2)参数X和y分别用来指定数据集及其对应的标签;3)参数cv用来指定划分策略,常设置为整数表示把数据集拆分成几个部分对模型进行训练和评分。该函数返回实数数组,数组中每个实数分别表示每次评分的结果,在实际使用时往往使用这些得分的平均值作为最终结果。

函数cross_val_score()使用k折叠交叉验证,把数据集拆分为k个部分,然后使用k个数据集对模型进行训练和评分。另外,sklearn.model_selection模块中还提供了随机拆分交叉验证ShuffleSplit和逐个测试交叉验证LeaveOneOut,可以查阅官方文档或者导入对象之后使用内置函数help()查看详细的用法。

下面的代码使用三种交叉验证分别对手写数字识别的支持向量机算法进行了评估。

运行结果:

温馨提示

关注本公众号“Python小屋”,通过菜单“最新资源”==>“历史文章”可以快速查看分专题的800篇技术文章列表(可根据关键字在页面上搜索感兴趣的文章),通过“最新资源”==>“微课专区”可以免费观看300节Python微课,通过“最新资源”==>“培训动态”可以查看近期Python培训安排,通过“最新资源”==>“教学资源”可以查看Python教学资源。

--------董付国老师Python系列图书--------

友情提示:不建议购买太多,最好先通过京东、当当、天猫查阅图书了解目录和侧重点,然后再选择购买适合自己的书。

1)《Python程序设计(第2版)》清华大学出版社,2016年8月

2)《Python可以这样学》清华大学出版社,2017年2月

3)《Python程序设计基础(第2版)》清华大学出版社,2018年1月

4)《中学生可以这样学Python》清华大学出版社,配套微课:《中学生可以这样学Python》84节微课免费观看地址

5)《Python程序设计开发宝典》清华大学出版社,2018年10月

6)《玩转Python轻松过二级》清华大学出版社,2018年5月

7)《Python程序设计基础与应用》机械工业出版社,2018年9月

8)《Python程序设计实验指导书》清华大学出版社,2019年4月

9)《Python编程基础与案例集锦(中学版)》电子工业出版社,2019年4月

10)《大数据的Python基础》机械工业出版社,预计2019年5月出版

11)译作《Python程序设计》,机械工业出版社(华章),2018年11月出版

12)繁体版《Python也可以这样学》,中国台湾博硕文化股份有限公司,2017年10月出版,本书为《Python可以这样学》在中国台湾发行的繁体版,两本书内容一样,不建议重复购买。

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python+tkinter根据窗体大小自动缩放并显示图像

    关注本公众号“Python小屋”,通过菜单“最新资源”==>“历史文章”可以快速查看分专题的800篇技术文章列表(可根据关键字在页面上搜索感兴趣的文章),通过“...

    Python小屋屋主
  • 虚拟Python环境可以这样创建

    Python支持创建多个虚拟环境,每个虚拟环境都是包含Python和相应扩展库的一个目录,多个虚拟环境(文件夹)之间互相不干扰。如果有可能根据需要使用不同版本的...

    Python小屋屋主
  • 淡定!不要因为纳入了高考和二级考试甚至极个别小学课程就盲目夸大Python!

    在这个自媒体超级发达或者泛滥的时代,前几天似乎一夜之间,整个朋友圈被Python纳入高考和全国计算机等级考试甚至小学信息技术课程教材的信息刷屏了,甚至一些主流媒...

    Python小屋屋主
  • 速看|Python 拯救你的人生颓

    预热 明日送十本python相关书籍 大学躺尸,毕业失业。已经毕业或者即将毕业的你是否还沉浸在虚度时光的悔恨中。Python大法带你紧追时代的脉搏,走向人生的巅...

    昱良
  • Ptython命名自喜剧团体,宅男程序员三个月写出的编程语言是如何改变世界的?

    1989年,荷兰的一位叫Guido Van Rossum的宅男程序员觉得其他语言都不好用,于是花三个月创造了一种新的编程语言。

    用户2769421
  • 还记得当年你是如何接触Python的吗?

    要说目前什么语言最受欢迎,我想Python肯定是其中之一了吧。Python语言以其简单的操作、强大的功能被广大爱好者追逐着。有的朋友刚开始学Python,有的朋...

    1480
  • Python 爬虫面试题 170 道:2019 版

    最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意...

    马哥linux运维
  • 如何才能学好Python?这里有你最想知道的答案

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • 想学 Python?可以看下 GitHub 上这几本开源的 Python 教程!

    随着人工智能、机器学习、数据挖掘等行业近几年的发展迅猛,Python 也开始得到越来越广泛的关注与应用。那些在人工智能等行业打得如火如荼的企业,也都纷纷开出高价...

    GitHubDaily
  • 世界已经无法阻挡Python入侵。

    很多人对学英语都感到崩溃,但最近山东的小学生又要学习一门“语言”—Python,除了山东在小学教材中加入Python外,今年浙江省高中信息技术教材改革项目中,也...

    用户5997198

扫码关注云+社区

领取腾讯云代金券