2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

optunaでlgb.Datasetが使えないエラーの対処法

Posted at

概要

optunaでlightGBMを使う際に、

----> 3 lgb.Dataset

AttributeError: module 'optuna_integration.lightgbm' has no attribute 'Dataset'
      2 from optuna.integration import lightgbm as lgb
----> 3 lgb.Dataset

/usr/local/lib/python3.10/dist-packages/optuna/integration/lightgbm.py in __getattr__(self, name)
     29 
     30     def __getattr__(self, name: str) -> Any:
---> 31         return lgb.__dict__[name]
     32 
     33 

KeyError: 'Dataset'

こういったエラーへの対処法。

結論

  • lightGBMをインストールする

    pip install lightGBM

原因

optunaの内部でlightgbm.Datasetを使っているが依存関係で指定されていない。

lightgbmがimportできてなかったら、lgb.Datasetにもimportされず、使えない。

with try_import() as _imports:
    import lightgbm as lgb

# Attach lightgbm API.
if _imports.is_successful():
    # To pass tests/lightgbm_tuner_tests/test_optimize.py.
    from lightgbm import Dataset
    from optuna_integration._lightgbm_tuner import LightGBMTuner
    from optuna_integration._lightgbm_tuner import LightGBMTunerCV

Google ColabではlightGBMが元からインストールされており、この問題にぶつかることはなかった。基本的にOptunaでlightGBmを使う際は、lightGBMが入っている環境だと思うが、初めてのリモート環境などでは注意が必要。

パッケージ管理はどうなってる

ここから下はエラーとは関係なく、知識として。

optunaは、tomlファイルでパッケージ管理を行っている。(requirements.txtより細かい設定ができるもの。)

[project.optional-dependencies]のtestの部分に書いてあるパッケージも一緒にインストールする際は、

!pip install optuna-integration[test] みたいにインストールできる

今回は、標準でlightGBMの依存関係がなかった。おそらく、optuna自体は他のモデルにも使えるために、lightgbmが必須ではないっぽい。でも、使うときにいい感じのエラーは出せないものかな。。。

パッケージ管理にはいろんな方法がある。以下はその例、まとめ。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?