当XGBoost给定类权重时,sklearn如何计算验证集上的准确性?



我正在使用XGBoost的sklearn API和sklearn的RandomizedSearchCV()来训练具有交叉验证的增强树模型。我的问题是不平衡的,所以我给我的XGBClassifier提供了scale_pos_weight参数。为简单起见,假设我正在用两个折叠(k = 2)进行交叉验证。在本文的最后,我提供了一个我正在拟合的模型示例。

如何在验证集上计算准确性(或任何度量)?是使用给XGBoost的scale_pos_weights参数对精度进行加权,还是sklearn计算未加权的精度?

import xgboost as xgb
from sklearn.model_selection import RandomForestClassifier
xgb_estimator = xgb.XGBClassifier(booster = "gbtree")
tune_grid = {"scale_pos_weight": [1, 10, 100],  "max_depth": [1, 5, 10]} # simple hyperparameters as example.
xgb_seearch = RandomizedSearchCV(xgb_estimator, tune_grid, cv=2, n_iter = 10, 
scoring = "accuracy", refit = True, 
return_train_score = True)
results = xgb_search.fit(X, y)
results.cv_results # look at cross validation metrics

sklearn计算未加权精度吗?

scikit-learn将选择scoring参数最大化的模型。当提供"accuracy"时,它将返回未加权的精度-这通常在不平衡问题上有偏差。

传递scoring="balanced_accuracy"来计算加权版本。

相关内容

  • 没有找到相关文章

最新更新