LoginSignup
7
3

More than 5 years have passed since last update.

カスタムLightGBMコードをGit管理する時に便利な設定

Last updated at Posted at 2019-04-20

こんにちは、最近本家LightGBMに2つほど機能追加を実装して、PRが採用された1ので喜んでいる@kenmatsu4です。

Git管理されたLightGBMのコードを編集して実行させたいとき、 Forkした自分のlightGBMのpythonコードを直接参照して欲しいのでそのための設定です。

何もしないとpipやcondaでインストールした先のpythonコードを参照してしまうので、その向き先を変えます。自分のカスタムコードをGit管理しないのであれば直接site-packages配下のlightgbmにある.pyコードを直接書き換えてしまえばいいのですが、Git管理するのであればこの方法が自分はいいと思っています。

前提条件

  • すでに動作するLightGBMがインストール済み(ビルド済みオブジェクトを参照するので)
  • MacOS High Sierra 10.13.6(17G3025)で試しています。(他の環境でもそんなに変わらないはず)
  • Anacondaで試しています(が、別な環境でもパスだけ注意すれば多分できる)
  • Pythonコードのカスタマイズが対象です。(C++でIDEをうまく使う方法誰か教えてください!)

手順

  1. https://github.com/Microsoft/LightGBM.git をForkして自分のアカウントにLightGBMを持ってくる。
  2. git cloneでForkしたソースコード一式をダウンロード。(僕の場合はgit clone https://github.com/matsuken92/LightGBM.gitを実行)
  3. sys.path からいま参照されているsite-packagesの場所を探してインストール済みのlightgbmフォルダを特定
  4. 3.で見つけたlightgbmフォルダにあるlib_lightgbm.so<cloneしたLightGBMのパス>/python-package配下にコピー

Notebookコード

以下Jupyter Notebookでの利用を想定しており、1つの区切りが1つのboxをイメージしています。

import sys

# customしたライブラリを変更した時にimportするたびにリロードしてくれるように設定する。
%load_ext autoreload
%autoreload 2
custom_lgb = "<cloneしたLightGBMのパス>"

 # Pythonが読み込むパスをsys.pathの先頭に追加
sys.path = [f"{custom_lgb}/python-package/"] + sys.path
import lightgbm as lgb

これだけです!
例えば<cloneしたLightGBMのパス>/python-package/__init__.py にprint文を入れるとちゃんと表示されることが確認できます。
独自LightGBMにしてKaggleでライバルに差をつけよう!w


  1. (1)複数metricsを指定している時にearly stopかける対象を1つ目に限定する機能 [link]と、 lgb.cv()を実行する時にtrainのmetricsも計算して表示する機能[link]の2件です。 

7
3
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
7
3