追記:2019/04/15
プログラムを修正し、コーディングフリーで Kernel 通知できるようになりました。
以下リポジトリのREADME
をもとに通知設定してください。
Kaggle Kernel Notification
はじめに
Kaggle のコンペを戦う上で Kernel からの情報収集(Kernel 乞食)は必要不可欠です。
ただ、現状 Kernel が投稿されたら通知する機能は Kaggle にありません。
そこで自力で作って見ました。
概要
Kaggle API と Heroku を使って、新規投稿された Kernel を Slack に投稿します。
環境
-
mac os 10.13.6
-
git
-
Heroku CLI
-
anaconda3-5.2.0
- Python 3.6.5
- kaggle 1.5.0
- pytz 2018.4
- Python 3.6.5
-
Kaggle API
-
Slack
-
Heroku account
-
クレジットカード
- アプリの登録に必要
- 今回の利用の範囲内であれば無料
手順
1. Slack の Webhook URL を取得
1.1 サイドバー下の App 横にある「+」を押します。
1.2 Incomig Webhook をインストールして設定を追加
1.3 通知を送るチャンネルを選択(or 作成)
これで Slack での準備は完了です。
2. コードをダウンロード
$ git clone https://github.com/Doarakko/kaggle-kernel-notification
$ cd kaggle-kernel-notification
2.1 通知するコンペを設定
$ kaggle competitions list
ref deadline category reward teamCount userHasEntered
--------------------------------------------- ------------------- --------------- --------- --------- --------------
digit-recognizer 2030-01-01 00:00:00 Getting Started Knowledge 2750 False
titanic 2030-01-01 00:00:00 Getting Started Knowledge 10701 True
house-prices-advanced-regression-techniques 2030-01-01 00:00:00 Getting Started Knowledge 4681 False
imagenet-object-localization-challenge 2029-12-31 07:00:00 Research Knowledge 31 False
competitive-data-science-predict-future-sales 2019-12-31 23:59:00 Playground Kudos 2014 True
histopathologic-cancer-detection 2019-03-30 23:59:00 Playground Knowledge 291 False
vsb-power-line-fault-detection 2019-03-21 23:59:00 Featured $25,000 109 False
microsoft-malware-prediction 2019-03-13 23:59:00 Research $25,000 591 True
humpback-whale-identification 2019-02-28 23:59:00 Featured $25,000 825 False
elo-merchant-category-recommendation 2019-02-26 23:59:00 Featured $50,000 1826 False
ga-customer-revenue-prediction 2019-02-15 23:59:00 Featured $45,000 1104 True
reducing-commercial-aviation-fatalities 2019-02-12 23:59:00 Playground Swag 16 False
通知したいコンペ名(ref
カラムの値)を、以下のリストに入れます。
何個でも OK です。
COMPETITIONS_LIST = ['elo-merchant-category-recommendation', 'vsb-power-line-fault-detection']
3. Heroku にデプロイ
$ heroku login
$ heroku create {適当なアプリ名}
$ git add --all
$ git commit -m 'Yeah!'
$ git push heroku master
4. Heroku の環境変数を設定
$ heroku create {適当なアプリ名}
で作ったアプリが作成されています。
作ったアプリをクリックして、「Settings」を開きます。
「Config Vars」に以下の環境変数を設定してください。
KAGGLE_USERNAME: kaggle.json の username
KAGGLE_KEY: kaggle.json の key
SLACK_WEBHOOK_URL: 1.3 で取得した Webhook URL です
5. 試しに実行
$ heroku run python main.py
Running python main.py on ⬢ {適当なアプリ名}... up, run.7384 (Free)
1.3 で選択したチャンネルに投稿されていれば OK です。
6. 定期実行させる
6.1 Heroku のスケジューラーを入れる
おそらく、ここらへんで Heroku 上でクレジットカードを登録する必要があります。
結構前にやったので忘れました。
$ heroku addons:create scheduler:standard
Heroku 上で確認すると「Heroku Scheduler」がインストールされています。
6.2 タスクを設定
「FREQUENCY」は Daily
にしてください。
プログラムの仕様で、Kernel の最終実行日がプログラム実行日と同じ場合に通知するようにしています。
そのため、Hourly
or Every 10 minutes
にしても意味ないです。
おわりに
Enjoy Kaggle!