【发布时间】:2020-09-22 05:26:19
【问题描述】:
我想做什么?
我正在尝试在GridSearchCV() 中使用StratifiedKFold()。
那么,我有什么困惑呢?
当我们使用 K 折交叉验证时,我们只需在 GridSearchCV() 中传递 CV 的数量,如下所示。
grid_search_m = GridSearchCV(rdm_forest_clf, param_grid, cv=5, scoring='f1', return_train_score=True, n_jobs=2)
然后,当我需要使用StratifiedKFold() 时,我认为程序应该保持不变。即,仅设置拆分数 - StratifiedKFold(n_splits=5) 为 cv。
grid_search_m = GridSearchCV(rdm_forest_clf, param_grid, cv=StratifiedKFold(n_splits=5), scoring='f1', return_train_score=True, n_jobs=2)
但是this answer 说
无论使用什么cross validation strategy,只需要 按照建议使用函数 split 提供生成器:
kfolds = StratifiedKFold(5) clf = GridSearchCV(estimator, parameters, scoring=qwk, cv=kfolds.split(xtrain,ytrain)) clf.fit(xtrain, ytrain)
另外,this question 的回答之一也建议这样做。这意味着,他们建议在使用GridSearchCV() 期间调用拆分函数:StratifiedKFold(n_splits=5).split(xtrain,ytrain)。但是,我发现调用split() 和不调用split() 给我相同的f1 分数。
因此,我的问题
我不明白为什么我们需要在分层 K 折叠过程中调用
split()函数为 我们不需要在 K Fold CV 期间做这种事情。如果调用
split()函数,GridSearchCV()将如何作为Split()函数returns training and testing data set indices 工作?也就是说,我想知道GridSearchCV()将如何使用这些索引?
【问题讨论】:
标签: split cross-validation grid-search gridsearchcv k-fold