xgboost如何知道训练模型的参数

时间:2020-06-23 12:16:18

标签: python python-3.x xgboost

如何检索XGBoost参数(即增强对象)? XGBoost版本-0.90(XGB包装器)

之后:

bst = xgb.train(param, dtrain, num_boost_round = best_iteration)

此:

bst.get_xgb_params()

给出错误:

'Booster' object has no attribute 'xgb_params'

此:

config = json.loads(bst.save_config())
print(config)

给出错误(从1.0版本开始可用):

'Booster' object has no attribute 'save_config'

此:

bst.attributes()

不返回任何内容:

{}

此:

bst.attr('Parameters'))

返回:

None

2 个答案:

答案 0 :(得分:1)

不幸的是,在使用低级 xgb api 时获取 booster 参数并非易事。

以下是我如何找到我正在寻找的助推器参数:

# this retrieves all booster and non-booster parameters
import json

config = json.loads(lowlevel_xgb.save_config()) # your xgb booster object
stack = [config]
internal = {}
while stack:
    obj = stack.pop()
    for k, v in obj.items():
        if k.endswith('_param'):
            for p_k, p_v in v.items():
                internal[p_k] = p_v
        elif isinstance(v, dict):
            stack.append(v)

# retrieve all parameter values from xgb.train in param search dict
from nested_lookup import nested_lookup

lowlevelconfig = {}
for key in search_params_dict: #dict of parameters you want to search for
    lowlevelconfig[key] = nested_lookup(key,config)

就我而言,我想将默认的低级 api 参数(即使用 xgb.train)与使用 scikit-wrapper(即使用 XGBClassifier)的默认参数进行比较。不幸的是,它们不一样!

如果你有同样的情况,你可以像我一样:

from nested_lookup import nested_lookup
lowlevelconfig = {}
for key in sci_xgb.get_params():#where sci_xgb is your scikit xgb model 
    lowlevelconfig[key] = nested_lookup(key,config)

这样,您就可以比较低级 xgb api 和 scikit 包装器的 booster 参数。

答案 1 :(得分:0)

here中我看不到任何方法来获得助推器的参数。 sci-kit learn wrapper的参数与get_xgb_params()类似。