Python XGBoost不考虑参数

Python XGBoost不考虑参数,python,python-3.x,machine-learning,scikit-learn,xgboost,Python,Python 3.x,Machine Learning,Scikit Learn,Xgboost,我在一个不平衡的场景中使用XGBoostClassifier,所以我想在fit()函数中包含sample\u weight参数。我正在使用Python和scikit学习API 问题是XGBoost似乎没有考虑权重参数。此外,即使我说n_jobs=-1,培训也根本没有并行化(只使用1个CPU) 这是我正在使用的代码: from xgboost import XGBClassifier import copy # Load data and split into X and y train_dat

我在一个不平衡的场景中使用XGBoostClassifier,所以我想在fit()函数中包含
sample\u weight
参数。我正在使用Python和scikit学习API

问题是XGBoost似乎没有考虑权重参数。此外,即使我说
n_jobs=-1
,培训也根本没有并行化(只使用1个CPU)

这是我正在使用的代码:

from xgboost import XGBClassifier
import copy

# Load data and split into X and y
train_data = pd.read_csv("my_path.csv")
y_train = train_data[TARGET_COL].to_list()
x_train = copy.deepcopy(train_data)
del x_train[TARGET_COL]

# Evaluate weights
w_yes, w_no = evaluate_weights(...)

sample_weights = []
for y in y_train:
    if y == 1:
        sample_weights.append(w_yes)
    elif y == 0:
        sample_weights.append(w_no)

model = XGBClassifier(n_jobs=-1)

# Train the model
trained_model = model.fit(x_train, y_train, sample_weight=sample_weights)
w_yes
值为25,
w_no
值为0.25

即使权重非常不同(原始数据集确实不平衡),它似乎也不会产生任何影响,例如
n_jobs
参数


有什么想法吗?我是否必须直接使用XGBoost语法,而不使用sklearn API?

类的平衡是什么?你在检查什么,看“它似乎没有产生任何影响”:一些预测,分数?这些预测几乎完全相同。如果我根据分数分离出测试数据集的前1%或10%,我能够识别相同比例的TP、TN、FP和FN。我希望通过使用权重,我能够增加TPP的数量。班级平衡是什么?你在检查什么,看“它似乎没有产生任何影响”:一些预测,分数?这些预测几乎完全相同。如果我根据分数分离出测试数据集的前1%或10%,我能够识别相同比例的TP、TN、FP和FN。我希望使用权重,我将能够增加TP的数量