如何使用F1分数作为XGBoost验证的评估指标



我正在尝试使用GridSearchCV和XGBoost验证一个模型。我希望我的评估指标是F1分数。我见过很多人使用scoring='f1'eval_metric=f1_score以及其他变体。有几点我很困惑。为什么有些人使用scoring=,而另一些人使用eval_metric=

在XGBoost文档中,没有F1分数评估指标(顺便说一句,考虑到他们确实拥有的其他一些指标,这似乎很奇怪(。但我在网上看到了很多关于";只需使用XGBoost内置的F1成绩评估器"哪里

无论我在这里放什么,我的代码都会在eval_metric行上抛出一个错误。

这是我的代码:

params = {
'max_depth': range(2,10,2),
'learning_rate': np.linspace(.1, .6, 6),
'min_child_weight': range(1,10,2),
}
grid = GridSearchCV(
estimator = XGBClassifier(n_jobs=-1,
n_estimators=500,
random_state=0),
param_grid = params,
)
eval_set = [(X_tr, y_tr),
(X_val, y_val)]
grid.fit(X_tr, y_tr,
eval_set=eval_set,
eval_metric='f1',  # <------What do I put here to make this evaluate based on f1 score???
early_stopping_rounds=25,
)                  

谢谢!

您可以通过以下方式实现:

from sklearn.model_selection import cross_val_score
result = cross_val_score(
estimator = your_xgboost_model,
X = X_dataframe, 
y = Y_dataframe, 
scoring = 'f1',
cv = 10
)

最新更新