原因は以下
- 前処理時にDataFrameの列の一部をcategory型に変換していた
- 学習データは一度parquet形式で保存したものを読み込んでlightgbmに渡していた
- テストデータは前処理して、parquet形式で保存せず、そのままlightgbmのpredictに渡していた
- 一度parquet形式で保存したものを読み込むと、category型がobject型になる(!)ので学習時とテストデータに対する推論時で列の型が違ってエラーになった
ファイルに保存する時の形式をparquetからpickleに変更して解決した。こんな罠があるとは・・
参考: