使用scikit-learn进行超参数调整的代码如下所示:

gs = GridSearchCV(estimator=pipe_svc,
             param_grid=param_grid,
             scoring='accuracy',
             cv=10,
             n_jobs=-1)

gs = gs.fit(X_train, y_train)
clf = gs.best_estimator_
clf.fit(X_train, y_train)

对于超参数的每个组合,其中执行K折叠交叉验证,并且使用给出最佳分数的组合来训练整个训练数据以适合模型,并且该模型将用于在测试上进行预测(未见)数据 .

我的问题是如何使用嵌套交叉验证执行相同的工作 . 以下代码执行嵌套的5x2交叉验证

gs = GridSearchCV(estimator=pipe_svc,
    param_grid=param_grid,
    scoring='accuracy',
    cv=2)

scores = cross_val_score(gs, X_train, y_train,
                         scoring='accuracy', cv=5)

其中GridSearchCV运行内部循环,而cross_val_score()运行外部循环 . 由于cv = 5赋予cross_val_score(),结果将是五个不同的模型(即超参数)

如果模型足够稳定,那么所有得到的超参数可能是相同的 . 但如果没有,人们应该自然地选择与cross_val_score()返回的得分数组中最高的超参数相对应的超参数

我想知道如何访问它,以便我可以使用它再次使用整个训练数据拟合模型,并最终预测测试数据集 .