对 sklearn 中 GridSearchCV 的说明

Clarifications on GridSearchCV in sklearn

关于 sklearn 中的 GridSearchCV 我有以下问题。我试过但找不到明确的答案。 下面是我使用 -

的代码补丁
dep = df2['responder_flag']
indep = df2.drop(df2.columns[[0,85]], axis = 1)

X_train, X_test, y_train, y_test = train_test_split(indep, dep,test_size=0.25, random_state = 23)

train = xgb.XGBClassifier(objective='binary:logistic')
param_grid = {'max_depth': [4,5], 'n_estimators': [500], 'learning_rate': [0.02,0.01]}
grid = GridSearchCV(train, param_grid,cv=5, scoring='roc_auc')
grid.fit(X_train, y_train)
  1. cross_validation,即GridSearchCV中的cv参数等同于Kfold或在训练时使用cross_validation_score和其他类似函数明确应用的其他CV技术数据?

  2. 我可以使用 GridsearchCV 进行交叉验证吗? 说如果我不提供多参数列表,它是否等于交叉验证技术?

  3. 执行 grid.fit(X_train, y_train) 语句后,是否会根据已识别的最佳参数训练模型并可直接用于模型预测,或者我是否需要使用 [= 定义另一个估算器18=] 然后训练并使用它进行预测?

如果较早回答这些问题,我们深表歉意。

答案如下:

  1. cv参数相当于k折。
    GridSearchCV 中,我们给出了一组我们希望模型采用的参数值。假设我们从 [0.0001, 0.001, 0.01, 0.1, 1, 10] 中取 learning_rate = 0.0001。当我们在gridsearch中指定cv=5时,它将对000.1执行5-fold cv。同样,它也会对剩余的值执行5-fold cv。 k 在这种情况下是 5。

  2. 从某种意义上说,是的。但是不要这样做,因为 GridSearchCV 需要一个参数列表。 GridSearchCV是一种进行超参数调优的方法。如果您不指定多个参数列表,它会破坏使用 GridSearch 的目的。

  3. 不需要在完成 grid.fit(X_train, y_train) 后手动在训练集上使用 grid.best_params_ 拟合模型。 GridSearchv 有一个名为 refit 的参数,如果我们设置 refit = True,它将自动将 grid.best_esitmator_ 重新拟合到整个训练集。它默认设置为 TrueDocumentation