Python プログラミング

【scikit-learn】LightLGBで「ValueError: Circular reference detected」のエラーが出た時

機械学習の勉強中です。

Kaggleで結構良い成績を残してるらしい、LightLGBをモデルに使った時に以下のエラーが発生しました。

 

ValueError: Circular reference detected

 

これを調べたところ原因は、PandasのデータフレームをLightLGBに渡した時にJSONの加工がうまく行かなかったことによるエラーのようです。

 

こちらのstackoverflowに書いてありました。

 

解決方法は以下の通り。

  • pd.cutとpd.qcutにラベルを付ける

 

使用する特徴量にpd.cutもしくは、pd.qcutで追加した特徴量が存在する場合

ラベルを付けずに作成するとエラーになるようです。なので以下の通り修正。(特徴量の名前とbinsの値は適時変更ください)

 

pd.cut

# NGパターン

train['f1'] = pd.cut(train['f1'], 8)

# OKパターン

bins = 8

train['f1'] = pd.cut(train['f1'], 8, labels=[f'bin_{i}' for i in range(bins)])

 

pd.qcut(cutがqcutになっただけ)

# NGパターン

train['f1'] = pd.cut(train['f1'], 8)

# OKパターン

bins = 8

train['f1'] = pd.qcut(train['f1'], 8, labels=[f'bin_{i}' for i in range(bins)])

 

以上で動くようになりました。

めちゃくちゃ詰まった。。。

-Python, プログラミング
-, ,

© 2020 クラインの備忘壺