LightGBMError: b'Check failed: config->bagging_freq > 0 && config->bagging_fraction < 1.0f && config->bagging_fraction > 0.0f

LightGBMError: b'Check failed: config->bagging_freq > 0 && config->bagging_fraction < 1.0f && config->bagging_fraction > 0.0f

在 Python 上使用 lightGBM,由于它没有足够的文档,我有一段时间无法解决这个问题。如果这里有任何有 lgb 经验的人,请帮我解决这几个问题。

  1. lgb.cv 在具有连续目标变量时不起作用。为什么?
  2. 当有 objective "regression" 时,我可以将 boosting_type 作为 "rf" (随机森林)吗?这个 issue 在图书馆这里打开有点证实我可以。想法?
  3. 下面是一段代码,如果我将 "rf" 参数替换为 "gbdt"

    ,则完全可以正常工作
    params = {
            "objective" : "regression", "metric" : "rmse",
            "num_leaves" : 150, "learning_rate" : 0.05,
            "bagging_fraction" : 0.6, "feature_fraction" : 0.7,
            "bagging_frequency" : 1, "bagging_seed" : 2018,
            "verbosity" : -1, 'max_depth':-1,
            "min_child_samples":20, "boosting":"rf"}
    
    model = lgb.train(params, lgtrain, 1000, valid_sets=[lgval],
            early_stopping_rounds=20, verbose_eval=20, evals_result=evals_result)
    

使用随机森林增强方法时,出现以下错误 -

LightGBMError: b'Check failed: config->bagging_freq > 0 && config->bagging_fraction < 1.0f && config->bagging_fraction > 0.0f at /home/travis/build/Microsoft/LightGBM/python-package/compile/src/boosting/rf.hpp, line 29 .\n'

如错误所示,代码失败,因为检查未通过。原因很简单——频率变量的名称是 bagging_freq 而不是 bagging_frequency

您已经找到第一个问题的正确答案lgb.cv 回归配置。