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)])

 

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

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

よく読まれている記事

1

  現在5年目のエンジニアで26歳です。 今回は20代の現役エンジニアとして、自分も含め転職について考えている方に向けて20代エンジニア転職に完全特化したおすすめのサービスを3つ紹介していき ...

2

これからエンジニアになりたい、プログラミングを使えるようになりたいという方に向けて 山のようにあるプログラミングスクールの中から、特におすすめなスクールをタイプ別に逆引きで3つ紹介します。 &nbsp ...

3

みなさんはを使っていますでしょうか。   本記事を見ていただいているということは、   プログラミングの勉強でを使うことに興味がある、 もしくはこれから動画を購入したいけどどれを買 ...

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

© 2020 クラインの備忘壺