如何检索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
答案 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()
类似。