lightgbm ---- ValueError:检测到循环引用

时间:2019-02-03 20:30:54

标签: python-3.x data-science

训练模型

将lightgbm导入为lgb lgb_train = lgb.Dataset(x_train,y_train) lgb_val = lgb.Dataset(x_test,y_test)

参数= {     '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 }

模型= lgb.train(参数,                        train_data,                        valid_sets = test_data,                        num_boost_round = 5000,                        early_stopping_rounds = 100)

y_pred = model.predict(test_data)

3 个答案:

答案 0 :(得分:2)

如果您使用cut或qcut函数进行装箱并且以后未进行编码(单热编码,标签编码..)。这可能是错误的原因。尝试使用编码。

我希望它能起作用。

答案 1 :(得分:0)

我遇到了同样的问题。

发布整个回溯以确保。

对我来说,序列化为JSON是一个问题,LightGBM在后台将其保存起来以备以后使用。

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

我的所有Pandas代码都被我写得不好的代码全部转换为dtype,并且我通常会以非常快的速度运行n-dirty,以查看哪些变量显示为重要变量。 LightGBM让我制作数据二进制文件进行训练(即,如果它们是datetime或timedelta dtypes,那么在让我运行任何东西之前会抛出错误)。它将运行得很好,报告一个AUC,然后在将分类信息转储到JSON的最后一个训练步骤之后失败。令人发疯,带有神秘的追溯。

希望这会有所帮助。

答案 2 :(得分:0)

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