Kaggle用のリポジトリ作りました

Feature Engineering + Algorithm開発に集中できるように,Kaggle用のリポジトリを作ったので簡単に解説したいと思います.リポジトリは以下

使用方法ですが,まず,適当なCompetition(competitionとします)からtrain.csvtest.csvをダウンロードして,kaggle-base/input/competition/に配置します.そして,以下のコマンドでsubmission.csvを作成します.作成される場所は,デフォルトではkaggle-base/workspace/postprocessor/competition/配下です.
あとはこのsubmission.csvをKaggleにsubmitすれば完了です.

このリポジトリは以下の3つのモジュールからなります.

  • preprocessor
  • learner
  • postprocessor

preprocessorは,train.csvtest.csvを元に,以下の4つのファイルをkaggle-base/workspace/preprocessor/competition/ 配下に作ります.

  • x_train.pickle
  • y_train.pickle
  • x_test.pickle
  • id_test.pickle

各ファイルの意味はscikit-learnに準拠していますが,id_testだけはテストファイルのidのリストです.

learnerは,上のファイルを元に,kaggle-base/workspace/learner/competition/配下にmodel.pickleを作ります.

postprocessorは,できたモデルを使ってテストデータに対して予測をし,kaggle-base/workspace/postprocessor/competition/配下にsubmission.csvを作ります.

これらを実行するには,kaggle-base配下で以下のコマンドを実行します.

bash run.sh competition id_column target_column task_type random_state

各引数の意味をtitanicやhouse-pricesなどを例に解説すると,以下のような感じです.

  • competition: project_name的な役割です.例えばtitanicやhouse-pricesなどを指定します.
  • id_column: IDに該当するカラム名です.例えばPassengerIdやIdなどを指定します.
  • target_column: 目的変数を指すカラム名です.例えば,SurvivedやSalePriceなどを指定します.
  • task_type: タスクのタイプを指定します.例えばclassificationやregressionを指定します.現状classificationとregressionしかサポートしていません.
  • random_state: 乱数のseedです.実験結果を再現するのに使います.

以上が簡単な使い方です.さて,ほとんどの場合,自分で実装した前処理や学習アルゴリズム,そして後処理を使いたいという場合がほとんどでしょう.その場合は,環境変数でそれらを指定します.以下の3つの独自のスクリプトを作成したとします.

  • kaggle-base/preprocessor/competition.py
  • kaggle-base/learner/competition.py
  • kaggle-base/postprocessor/competition.py

これらを使ってsubmission.csvを作成するには,以下のコマンドを実行します.

env PREPROCESSOR=competiton.py LEARNER=competition.py POSTPROCESSOR=competition.py bash run.sh competition id_column target_column task_type random_state

以上が使い方になります.実際に独自スクリプトを使う際には,新しいブランチを作ることを推奨します.報酬がKnowledgeなCompetitionに対しては,competition-titanic-developer-nameみたいな感じで作って,cv score + public scoreを添えてプルリクを出していただければ,もっとも良いアルゴリズムは,competition-titanicにマージしようと思っています.初めて使う人が,ブランチをチェックアウトすることで,最高性能のアルゴリズムを見ることができるように.もちろん,このプロジェクトが流行ればですが笑.

ぜひ使っていただければ幸いです.

Written with StackEdit.

0 件のコメント:

コメントを投稿

機械学習の問題設定

機械学習の問題設定 機械学習の問題設定を見直したのでメモ. ( Ω , F , P ) (\Omega, \mathcal{F}, P) ( Ω , F , P ) : ベースとなる確率空間 ( X , F X ) (\mathcal...