python - sklearn 中关于 GridSearchCV 的说明
问题描述
我有以下关于GridSearchCV
sklearn 的问题。我试过但找不到明确的答案。下面是我使用的代码补丁 -
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)
cross_validation
即 cv 参数是否GridSearchCV
等同于在训练数据时Kfold
使用和其他类似函数显式应用的其他 CV 技术?cross_validation_score
我可以
GridsearchCV
只用于交叉验证吗?说如果我不提供多个参数列表,它是否等于交叉验证技术?执行该
grid.fit(X_train, y_train)
语句后,是否会根据已识别的最佳参数训练模型并可直接用于模型预测,或者我是否需要定义另一个估计器,grid.best_params_
然后进行训练并将其用于预测?
抱歉,如果这些问题得到较早的回答。
解决方案
以下是答案:
cv
参数相当于k-fold。
在GridSearchCV
中,我们给出了一组我们希望模型采用的参数值。假设我们learning_rate
从 [0.0001, 0.001, 0.01, 0.1, 1, 10] 中取 = 0.0001。当我们在 中指定 cv=5 时gridsearch
,它将执行5-fold cv
for000.1
。同样,它也会5-fold cv
对剩余的值执行。在这种情况下,k 是 5。从某种意义上说,是的。但不要这样做,因为 GridSearchCV 需要一个参数列表。
GridSearchCV
是一种执行超参数调整的方法。如果你不指定多个参数列表,它就违背了使用 GridSearch 的目的。完成后无需手动将模型拟合到
grid.best_params_
训练集上。有一个名为的参数,如果我们设置,它将自动重新适应整个训练集。它默认设置为。文档grid.fit(X_train, y_train)
GridSearchv
refit
grid.best_esitmator_
refit = True
True
推荐阅读
- vue.js - How to create router-link programmatically on html render using Datatables.net + Vue.js?
- python - 如何在 Python 中获取每个集群的半径或直径?
- angular - 如何验证反应形式的字段数组?
- r - 双和计算,最有效的方法是什么?
- azure - 使用 powerShell 选择与唯一字符串匹配的所有值
- ruby-on-rails - google vision API HTTP Forbidden 错误的原因?红宝石(导轨)
- c# - 如何使用一个类而不是创建多个方法?
- bash - 使用 sed 创建脚本以将静态路由添加到文件 /etc/network/interfaces 上的不同子接口
- java - java中的object和object[]有什么区别
- c# - 在 C# 中使用 Hybridizer 时出现错误“Dll 加载错误”