封面图片:《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可以这样学》在中国台湾发行的繁体版,两本书内容一样,不建议重复购买。