我正在使用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"
来计算加权版本。