ValueError:在 LightGBM 中检测到循环引用

Mar*_*ren 6 python-3.x data-science

训练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)
Run Code Online (Sandbox Code Playgroud)

小智 5

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

我希望它能起作用。


小智 3

我有什么可能是同样的问题。

发布整个回溯以确保。

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

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

我的所有数据都被我写得不好的 Pandas 代码转换为分类数据类型,而且我通常会相当快地运行初始 GBM 来查看哪些变量显示为重要。LightGBM 让我制作用于训练的数据二进制文件(即,如果它们是日期时间或时间增量数据类型,那么在让我运行任何内容之前,它会抛出错误)。它会很好地运行训练,报告 AUC,然后在最后一个训练步骤之后将分类转储到 JSON 时失败。这是令人发狂的,带有神秘的追溯。

希望这可以帮助。