正如@***建议的,您可以在网格搜索中使用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折。您不能在K折中将最低频率设置为1,否则在训练时会抛出错误。我曾经遇到过这种情况。使用下面的代码片段可以帮助您解决这个问题。
例如
import pandas as pdY_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参数
回答: