有时我们挑出的模型在测试集上的效果ok,但是在新的数据集上就没那么ok了,行话叫做鲁棒性(robust)不强。目前普遍的做法,是使用cross_validation来评估模型以及挑选模型。
它的基本思想就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。
划分数据集的目的,就是为了更好的评测模型。交叉验证是在机器学习建立模型和验证模型参数时常用的方法。交叉验证就是重复使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓的‘交叉’。
详见:https://blog.csdn.net/u010986753/article/details/98069124
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’)
参数
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]
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 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正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。重要的事多说几遍。。。。。。