首页 > 解决方案 > sklearn 中关于 GridSearchCV 的说明

问题描述

我有以下关于GridSearchCVsklearn 的问题。我试过但找不到明确的答案。下面是我使用的代码补丁 -

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即 cv 参数是否GridSearchCV等同于在训练数据时Kfold使用和其他类似函数显式应用的其他 CV 技术?cross_validation_score

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

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

抱歉,如果这些问题得到较早的回答。

标签: pythonpython-3.xscikit-learncross-validationgridsearchcv

解决方案


以下是答案:

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

  2. 从某种意义上说,是的。但不要这样做,因为 GridSearchCV 需要一个参数列表。 GridSearchCV是一种执行超参数调整的方法。如果你不指定多个参数列表,它就违背了使用 GridSearch 的目的。

  3. 完成后无需手动将模型拟合到grid.best_params_训练集上。有一个名为的参数,如果我们设置,它将自动重新适应整个训练集。它默认设置为。文档grid.fit(X_train, y_train)GridSearchvrefitgrid.best_esitmator_refit = TrueTrue


推荐阅读