首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn.cross_validation.cross_val_score "cv“参数问题

sklearn.cross_validation.cross_val_score "cv“参数问题
EN

Data Science用户
提问于 2016-09-16 23:17:05
回答 1查看 6.9K关注 0票数 1

我正在研究Kaggle关于巨大灾难的教程,根据我如何使用cross_validation.cross_val_score的细节,我得到了不同的结果。

如果我这样说:

代码语言:javascript
复制
scores = cross_validation.cross_val_score(alg, titanic[predictors], titanic["Survived"], cv=3)

print(scores.mean())

0.801346801347

我得到的分数和我所说的不一样:

代码语言:javascript
复制
kf = KFold(titanic.shape[0], n_folds=3, random_state=1)

scores = cross_validation.cross_val_score(alg, titanic[predictors], titanic["Survived"], cv=kf)

print(scores.mean())

0.785634118967

这些数字是相近的,但差别很大。据我所知,这两个代码段都要求采用三重交叉验证策略。有人能解释一下第二个例子下面发生了什么,这导致了分数略低吗?

EN

回答 1

Data Science用户

回答已采纳

发布于 2016-09-17 00:40:14

摘自文档 cross_val_score's的论点:

对于int/None输入,如果估计器是分类器,并且y是二进制或多类,则使用StratifiedKFold。在所有其他情况下,都使用KFold。

我认为,在第一种情况下,StratifiedKFold被用作缺省值。在第二种情况下,您将显式地传递一个KFold生成器。

文档中也记录了两者之间的差异。

KFold将所有样本划分为k组,称为折叠(如果k = n,这相当于退出一种策略),大小相同(如果可能的话)。... StratifiedKFoldk-fold的一个变体,它返回stratified折叠:每个集合包含与完整集大致相同的每个目标类的样本百分比。

折叠式上的差异是造成分数差异的原因。

另外,我注意到您正在将一个random_state参数传递给KFold对象。但是,您应该注意,只有当您还将KFold的S洗牌参数设置为True (默认情况下为False )时,才会使用此种子。

票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/14046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档