gpt4 book ai didi

python - 在 Python 中为 XGBoost 指定 tree_method 参数

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:55 27 4
gpt4 key购买 nike

我正在使用 Python 中的 XGBoost(PyPl 上的最新版本:0.6)开发一个预测模型,并且一直在开发它来训练我大约一半的数据。现在我有了最终模型,我用我所有的数据对其进行了训练,但收到了这条消息,这是我以前从未见过的:

Tree method is automatically selected to be 'approx' for faster speed. to use old behavior(exact greedy algorithm on single machine), set tree_method to 'exact'"

作为可重现的示例,以下代码也在我的机器上生成该消息:

import numpy as np
import xgboost as xgb

rows = 10**7
cols = 20
X = np.random.randint(0, 100, (rows, cols))
y = np.random.randint(0,2, size=rows)

clf = xgb.XGBClassifier(max_depth=5)
clf.fit(X,y)

我尝试在我的模型的初始化和 fit() 步骤中将 tree_method 设置为“精确”,但每个步骤都会抛出错误:

import xgboost as xgb
clf = xgb.XGBClassifier(tree_method = 'exact')
clf
> __init__() got an unexpected keyword argument 'tree_method'


my_pipeline.fit(X_train, Y_train, clf__tree_method='exact')
> self._final_estimator.fit(Xt, y, **fit_params) TypeError: fit() got an
> unexpected keyword argument 'tree_method'

如何在 Python 中使用 XGBoost 指定 tree_method='exact'?

最佳答案

根据 XGBoost parameter documentation ,这是因为 tree_method 的默认值是“auto”。 “自动”设置取决于数据:对于“中小型”数据,它将使用“精确”方法,对于“非常大”的数据集,它将使用“近似”。当您开始使用整个训练集(而不是 50%)时,您一定已经超过了更改 tree_method 自动值的训练大小阈值。从文档中不清楚需要多少观察才能达到该阈值,但它似乎介于 5 到 1000 万行之间(因为您有 rows = 10**7)。

我不知道 XGBoost Python 模块中是否公开了 tree_method 参数(听起来好像没有,所以可能提交错误报告?),但是 tree_method 在 R API 中公开。

文档描述了您看到该警告消息的原因:

enter image description here

关于python - 在 Python 中为 XGBoost 指定 tree_method 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44058786/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com