python - 如何确定 cross_validate 是否使用分层 K 折?
问题描述
我想确保cross_validate
使用分层简历。在 的文档中cross_validate
,有这样写
对于 int/None 输入,如果估计器是分类器并且 y 是二元或多类,则使用 StratifiedKFold。在所有其他情况下,使用 KFold。
我的估计器是一个分类器,我的因变量是二元的。所以理论上也通过设置cv=None
我应该得到一个分层的简历。
我怎么能确定呢?如何检查是否cross_validate
在这里:
rfc_score = cross_validate(rfc, desc_tfidf, labels, scoring=metrics)
真的是在使用分层简历吗?
解决方案
从 的源代码中cross-validate
,我们可以看到该方法运行的第一件事是:
cv = check_cv(cv, y, classifier=is_classifier(estimator))
在 中check_cv
,我们有:
cv = 5 if cv is None else cv
if isinstance(cv, numbers.Integral):
if (classifier and (y is not None) and
(type_of_target(y) in ('binary', 'multiclass'))):
return StratifiedKFold(cv)
else:
return KFold(cv)
这正是文档所声称的。
推荐阅读
- vim - 如何创建能够识别具有不同语法的多个部分的集中语法文件?
- java - 使用 LinkedHashSet 存储随机数但有重复
- vba - VBA Excel表格公式参考
- jenkins - 使用 for 循环的并行 jenkins 作业
- mysql - 大数据表中的Mysql查询
- ios - 将应用程序从 GCM 更新到 FCM 后,iOS 设备未收到推送通知
- java - Android Studio Osmand 项目
- python - Python pandas: groupby and devide by the first value of each group
- c++ - 如何修复用于根据参数返回不同类型的模板类中的错误 C2679?
- javascript - 使用 CSS 隐藏后,Div 没有使用 jQuery .show() 重新出现