首页 > 解决方案 > 为什么我在使用 xgboost 时会收到此 FutureWarning?

问题描述

我正在用xgboost脚本训练二进制分类器

class_weights = list(class_weight.compute_class_weight('balanced',np.unique(y_train),y_train))
w_array = np.ones(len(y_train), dtype='float')
for i, val in enumerate(y_train):
    w_array[i] = class_weights[val]    

eval_set = [(x_train, y_train), (x_val, y_val)]
model = XGBClassifier(max_depth=5,n_estimators=1000)
model.fit(x_train, 
          y_train,
          verbose=0,
          eval_set=eval_set,
          eval_metric='auc',
          sample_weight=w_array,
          early_stopping_rounds=200)

在上面的脚本中,x_trainx_val分别是形状数组(386, 72)(387, 72)y_train并且y_val是零和一的数组。运行脚本,我会收到警告

FutureWarning: Pass classes=[0 1], y=[1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1] as keyword args. From version 0.25 passing these as positional arguments will result in an error
  FutureWarning)

这是什么意思?

我的xgboost版本是0.81 .

标签: pythonpython-3.xxgboost

解决方案


这是指compute_class_weight. 它要求您明确地通过您尝试预测的类。

文档

类:ndarray

数据中出现的类数组,由 np.unique(y_org) 给出,y_org 是原始类标签。


推荐阅读