sklearn中GridSearchCV的澄清



我对sklearn中的GridSearchCV有以下问题。我试过了,但找不到明确的答案。下面是代码补丁iam使用-

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)语句,它是否根据已识别的最佳参数训练模型并可直接用于模型预测,还是我需要用grid.best_params_定义另一个估计器,然后训练并用于预测?

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

以下是答案:

  1. cv参数等价于k倍
    GridSearchCV中,我们给出了一组我们希望模型采用的参数值。假设learning_rate=0.0001是从[00001,0.01,1,10]中得出的。当我们在gridsearch中指定cv=5时,它将对000.1执行5-fold cv。类似地,它还将对剩余值执行5-fold cv。在这种情况下k是5。

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

  3. 在完成grid.fit(X_train, y_train)之后,不需要手动在训练集上拟合具有grid.best_params_的模型。GridSearchv有一个名为refit的参数,如果我们设置refit = True,它将自动将grid.best_esitmator_改装到整个训练集。默认情况下,它设置为True。文档

最新更新