代码之家  ›  专栏  ›  技术社区  ›  Minions

Gridsearch中的默认CV与Kfold中的默认CV有什么区别

  •  0
  • Minions  · 技术社区  · 7 年前

    我想知道,在sklearn的GridSearchCV方法中实现的默认交叉验证与使用它的Kfold方法之间有什么区别,如以下代码中所示:

    不使用Kford:

    clf = GridSearchCV(estimator=model, param_grid=parameters, cv=10, scoring='f1_macro')
    clf = clf.fit(xOri, yOri)
    

    使用Kfold:

    NUM_TRIALS = 5
        for i in range(NUM_TRIALS):
             cv = KFold(n_splits=10, shuffle=True, random_state=i)
             clf = GridSearchCV(estimator=model, param_grid=parameters, cv=cv, scoring='f1_macro')
             clf = clf.fit(xOri, yOri)
    

    正如我从手册中了解到的,他们都将数据分为10部分,9部分用于培训,1部分用于验证,但在使用Kfold的示例中。。它进行了5次采样过程( NUM_TRIALS = 5 )每次数据在分成10部分之前都会被洗牌。我说得对吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   plumbus_bouquet    7 年前

    看来你是对的,伊什。

    GridSearchCV使用KFold或StratifiedKFold,具体取决于您的模型是用于回归(KFold)还是用于分类(然后使用StratifiedKFold)。

    由于我不知道您的数据是什么样的,所以我无法确定在这种情况下使用的是什么。

    http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html

    但是,上面的代码将使用不同的随机种子重复KFold验证5次。

    这是否会产生有意义的不同数据分割?不确定。