python - 为什么我在使用 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_train
和x_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
.
解决方案
这是指compute_class_weight
. 它要求您明确地通过您尝试预测的类。
从文档:
类:ndarray
数据中出现的类数组,由 np.unique(y_org) 给出,y_org 是原始类标签。
推荐阅读
- python - 根据条件从python中的数据库服务器中提取选择性数据
- apache-spark - 使用 ELK 堆栈进行日志处理
- python - 创建等距数组
- excel - 另一个 Excel 求解器中的 Excel 求解器(求解器的串联连接)
- excel - 句号后第一个字母大写的Excel公式
- r - 根据最高百分比将行名分配给列名
- spring - Spring Cloud Gateway API - 路由上的上下文路径不起作用
- android - FCM推送消息发送没有主题和不同的数据块
- c# - Xbox 上的 C# UWP Windows.Web.Http.HttpClient 错误 401
- android - 在 ConstraintLayout 中,当我将视图的 layoutDirection 设置为“rtl”时,出现了一些问题。如何避免这种情况?