Cross-validation\cross_val_score\鲁棒性

文章目录

  • 一、什么是交叉验证法Cross-validation ?
  • 二、为什么用交叉验证法?
  • 三、主要有哪些方法?
  • 四、Cross_val_score 函数和多度量评估
  • 五、Cross_validate()
  • 有趣的事,Python永远不会缺席
  • 培训说明

一、什么是交叉验证法Cross-validation ?

  有时我们挑出的模型在测试集上的效果ok,但是在新的数据集上就没那么ok了,行话叫做鲁棒性(robust)不强。目前普遍的做法,是使用cross_validation来评估模型以及挑选模型。
  它的基本思想就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。
  划分数据集的目的,就是为了更好的评测模型。交叉验证是在机器学习建立模型和验证模型参数时常用的方法。交叉验证就是重复使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓的‘交叉’。

二、为什么用交叉验证法?

  • 交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。
  • 还可以从有限的数据中获取尽可能多的有效信息。

三、主要有哪些方法?

详见:https://blog.csdn.net/u010986753/article/details/98069124

四、Cross_val_score 函数和多度量评估

  • cross_validate 函数与 cross_val_score 在下面的两个方面有些不同 -

  • 它允许指定多个指标进行评估.
    除了测试得分之外,它还会返回一个包含训练得分,拟合次数, score-times (得分次数)的一个字典。

sklearn.cross_validation.cross_val_score(estimator, X, y=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch=2*n_jobs’)

参数

  • estimator:数据对象
  • X:数据
  • y:预测数据
  • soring:调用的方法
  • cv:交叉验证生成器或可迭代的次数
  • n_jobs:同时工作的cpu个数(-1代表全部)
  • verbose:详细程度
  • fit_params:传递给估计器的拟合方法的参数
  • pre_dispatch:控制并行执行期间调度的作业数量。减少这个数量对于避免在CPU发送更多作业时CPU内存消耗的扩大是有用的。该参数可以是:

  1. 没有,在这种情况下,所有的工作立即创建并产生。将其用于轻量级和快速运行的作业,以避免由于按需产生作业而导致延迟
  2. 一个int,给出所产生的总工作的确切数量
  3. 一个字符串,给出一个表达式作为n_jobs的函数,如’2 * n_jobs’
返回
  交叉验证每次运行的评分数组

from sklearn import datasets, linear_model
from sklearn.cross_validation import cross_val_score
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
lasso = linear_model.Lasso()
print(cross_val_score(lasso, X, y))  

# [ 0.33150734  0.08022311  0.03531764]

五、Cross_validate()

sklearn.model_selection.cross_validate(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch=2*n_jobs’, return_train_score=’warn’)

参数:
estimator: 必须是含有fit method的对象,可以是自己定义的Pipline

X: 参与cross_validate 的featrues

y: 默认为None,训练集标签(在监督学习的情况下)

groups: array, shape(n_samples) ,这个用法很神奇,比如说你的train set 有350个就像本例,那么当你设置
[1,1,….2,2] 一共350个1和2的时候,在训练集中就相当于2折。1的为一组,2的为1组。

cv: int,需要划分成几折。分类的情况下是SratiediedKFold,其他情况下是KFold

n_jobs: int CPUs使用数量

fit_params: dict, optional 传入estimator fit method的参数

pre_dispatch: int, 控制并行计算的jobs,减少数量,可以避免内存爆炸

return_train_score: 是否返回训练评估参数,默认是True 在0.21版本后会改为False,建议改为False减少计算量
返回:
  **scores:**dict,包含test_score,train_score,fit_time,score_time

在这里插入代码片

有趣的事,Python永远不会缺席

欢迎关注小婷儿的博客

    文章内容来源于小婷儿的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

    如需转发,请注明出处:小婷儿的博客python    https://www.cnblogs.com/xxtalhr/

博客园 https://www.cnblogs.com/xxtalhr/

CSDN https://blog.csdn.net/u010986753

有问题请在博客下留言或加作者:
     微信:tinghai87605025 联系我加微信群
     QQ :87605025
     python QQ交流群:py_data 483766429

培训说明

OCP培训说明连接 https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接 https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

     小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。重要的事多说几遍。。。。。。

你可能感兴趣的:(基本概念,model_selection)