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()查看详细的用法。

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

运行结果:

教学大纲

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值