如何使用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,
)
谢谢!
I'm trying to validate a model using GridSearchCV and XGBoost. I want my evaluation metric to be F1 score. I've seen many people use scoring='f1'
and eval_metric=f1_score
and other variations. I'm confused on a couple of points. Why are some people using scoring=
and others using eval_metric=
?
In the XGBoost documentation, there's no F1 score evaluation metric (which seems strange, btw, considering some of the others they do have). But I see lots of advice online to "just use XGBoost's built-in F1 score evaluator." Where??
No matter what I put here, my code throws an error on the eval_metric
line.
Here is my code:
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,
)
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以用这个来实现它:
you can achieve it with this: