我正在尝试弄清楚如何进行k折交叉验证。我希望有人能告诉我我的两个印刷陈述之间的区别。他们给了我很大的数据,我认为它们会一样。
##train is my training data,
##target is my target, my binary class.
dtc = DecisionTreeClassifier()
kf = KFold(n_splits=10)
print(cross_val_score(dtc, train, target, cv=kf, scoring='accuracy'))
print(cross_val_score(dtc, train, target, cv=10, scoring='accuracy'))
DecisionTreeClassifier
源自 ClassifierMixin
,如文档(重点矿山)所述:
计算交叉验证指标
当
,则使用后者。cv
参数是整数时,cross_val_score
默认情况下使用KFold
或StratifiedKFold
策略,如果估算器源自ClassifierMixin
。
因此,当您通过cv=10
时,您正在使用StratifiedKFold
策略,而通过cv=kf
,则使用常规KFold
策略。
在分类中,分层通常试图确保每个测试折叠具有大致相等的类表示。有关更多信息,请参阅了解交叉验证的分层交叉验证。