【问题标题】:ValueError: Circular reference detected in LightGBMValueError:在 LightGBM 中检测到圆形参考
【发布时间】:2019-02-03 20:30:54
【问题描述】:

我在训练 LightGBM 模型时收到以下错误:

# Train the model
import lightgbm as lgb
lgb_train = lgb.Dataset(x_train, y_train)
lgb_val = lgb.Dataset(x_test, y_test)

parameters = {
    'application': 'binary',
    'objective': 'binary',
    'metric': 'auc',
    'is_unbalance': 'true',
    'boosting': 'gbdt',
    'num_leaves': 31,
    'feature_fraction': 0.5,
    'bagging_fraction': 0.5,
    'bagging_freq': 20,
    'learning_rate': 0.05,
    'verbose': 0
}

model = lgb.train(parameters,
                       train_data,
                       valid_sets=test_data,
                       num_boost_round=5000,
                       early_stopping_rounds=100)

y_pred = model.predict(test_data)

【问题讨论】:

    标签: python-3.x data-science


    【解决方案1】:

    如果您使用 cut 或 qcut 函数进行 binning 并且稍后没有编码(one-hot 编码、标签编码 ..)。这可能是错误的原因。尝试使用编码。

    我希望它有效。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。

      发布整个回溯以确保。

      对我来说,序列化为 JSON 是一个问题,LightGBM 在后台执行此操作以保存助推器以供以后使用。

      检查您的数据集中是否有任何日期/日期时间列,或任何远程看起来像日期的内容,然后将其删除或转换为 JSON 可以处理的内容。

      我的所有 Pandas 代码都被我写得很糟糕的一些 Pandas 代码转换为分类 dtype,我通常会在初始 GBM 运行时相当快-n-dirty 以查看哪些变量显示为重要。 LightGBM 让我制作用于训练的数据二进制文件(即,如果它们是 datetime 或 timedelta dtypes 在让我运行任何东西之前它会引发错误)。它会很好地运行训练,报告 AUC,然后在最后一个训练步骤后将分类转储到 JSON 时失败。这令人抓狂,带有神秘的追溯。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        如果数据集中有任何时间增量变量,请使用 dt.days 属性将其转换为 int。我也遇到了同样的问题,就是Github of light gbm中报告的问题

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-05-24
          • 2016-06-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-09
          • 2014-12-23
          • 2021-11-18
          相关资源
          最近更新 更多