如何将F1分数用作XGBoost验证的评估指标?

3

我正在尝试使用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,
)                  

谢谢!

1个回答

0

你可以用这个来实现:

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
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接