正如@Noki 所建议的,您可以在 Grid Search CV 中使用 cv 参数。
GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, iid='deprecated',
refit=True, cv=None, verbose=0,
pre_dispatch='2*n_jobs',error_score=nan,return_train_score=False)
文档还明确指出,如果是分类问题,它将自动确保它是分层的。
对于整数/无输入,如果估计器是分类器并且 y 是二进制或
多类,使用 StratifiedKFold。在所有其他情况下,使用 KFold。
但是,我想补充一点:
您可以根据您的 Y_target 变量的值计数使您的 K-folds 动态化。
您不能将 K-fold 中频率的最低计数设为 1,它会在训练时引发错误。我碰巧遇到了这种情况。使用下面的代码 sn-p 来帮助你。
例如
import pandas as pd
Y_target=pd.Series([0,1,1,1,1,0,0,0,6,6,6,6,6,6,6,6,6])
if Y_target.value_counts().iloc[-1]<2:
raise Exception ("No value can have frequency count as 1 in Y-target")
else:
Kfold=Y_target.value_counts().iloc[-1]
然后您可以在网格搜索中将 Kfold 分配给您的 cv 参数