xgboost 中出现警告
Posted
技术标签:
【中文标题】xgboost 中出现警告【英文标题】:Warning occuring in xgboost 【发布时间】:2021-07-17 08:53:09 【问题描述】:我正在使用 xgboost 解决多分类问题。
但是,拟合 xgboost 模型时出现警告。
我的代码如下。我正在使用 xgboost 1.4.0
start = time.time()
xgb_model = xgboost.XGBClassifier(tree_method='gpu_hist', eta = 0.2, nrounds= 1000,
colsample_bytree=0.5,
metric='multi:softmax')
hr_pred = xgb_model.fit(x_train, np.ravel(y_train, order='C')).predict(x_test)
print(classification_report(y_test, hr_pred))
print(time.time()-start)
结果很好。但是会弹出这个警告。
Parameters: "metric", "nrounds" might not be used.
This may not be accurate due to some parameters are only used in language bindings but
passed down to XGBoost core. Or some parameters are not used but slip through this
verification. Please open an issue if you find above cases.
UserWarning: Use subset (sliced data) of np.ndarray is not recommended because it will generate extra copies and increase memory consumption
"because it will generate extra copies and increase " +
-
即使不准确,我也不知道下传到 XGBoost 内核意味着什么。
我在哪里使用了 ndarray 的子集?
【问题讨论】:
这个警告也出现在他们的回归器上。也许你想在 GitHub 上打开一个问题? 如果我能解决这个警告,我会的。但我不知道该怎么办。 【参考方案1】:我知道这是一个临时修复,但 pip uninstall xgboost
然后 pip install xgboost==1.3.3
为我工作。
【讨论】:
【参考方案2】:我个人认为降级的解决方案相当冒险。
相反,您可以使用warnings.filterwarnings(action='ignore', category=UserWarning)
轻松抑制此特定警告。
不幸的是,根据开发人员的说法,这是预期的行为。 https://github.com/dmlc/xgboost/issues/6908
【讨论】:
warnings.filterwarnings(action='ignore', category=UserWarning)
应该写在哪里?将该代码添加到我的 Python 脚本中会产生错误:NameError: name 'warnings' is not defined
import warnings
会有所帮助 :) 您可以在自己的脚本中调用 xgb。【参考方案3】:
在脚本顶部插入此代码 sn-p。该消息是与不需要的警告消息匹配的正则表达式。
import warnings
warnings.filterwarnings(action="ignore", message=r'.*Use subset.*of np.ndarray is not recommended')
【讨论】:
以上是关于xgboost 中出现警告的主要内容,如果未能解决你的问题,请参考以下文章
Jupyter上报:ModuleNotFoundError: No module named ‘xgboost‘