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

2024-06-16 03:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如何检索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

Tags: no版本config参数objectsave错误attribute
2条回答

我看不出有什么办法可以得到助推器的参数。但是sci-kit learn wrapper具有您正在查找的参数,如get_xgb_params()

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

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

# 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包装器的默认参数(即使用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包装器的增压器参数

相关问题 更多 >