XGBoost не учитывает параметры - PullRequest
1 голос
/ 10 июля 2020

Я использую XGBoostClassifier в несбалансированном сценарии, поэтому я хочу включить параметр sample_weight в функцию fit () . Я использую Python и scikit-learn API.

Проблема в том, что кажется, что XGBoost не принимает во внимание параметр веса. Кроме того, даже если я скажу n_jobs=-1, обучение не распараллеливается вообще (используется только 1 ЦП).

Это код, который я использую:

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?

...