updated on 2020-01-09
完全にクラウドで実行される Jupyter ノートブック環境です。設定不要で、無料でご利用になれます。
Colaboratory を使用すると、コードの記述と実行、解析の保存や共有、強力なコンピューティング リソースへのアクセスなどをブラウザか
らすべて無料で行えます。
Kaggleは企業や研究者がデータを投稿し、世界中の統計家やデータ分析家がその最適モデルを競い合う、予測モデリング及び分析手法関連プラットフォーム及びその運営会社である。 モデル作成にクラウドソーシング手法が採用される理由としては、いかなる予測モデリング課題には無数の戦略が適用可能であり、どの分析手法が最も効果的であるか事前に把握することは不可能であることに拠る。
CPUだけのPCでは、計算に時間がかかりすぎたり、データをダウンロードする空きがなかったりする。
そこで、Colabortoryでレンタルマシンを使って、kaggleの機械学習を行う。
よりログインして、右上のプロフィール画像、"My Account"の順にクリックする
これでkaggle.jsonがダウンロードされます。
(kaggle.json)
{"username":"######","key":"xxxxx"}
なお、jupyter notebookのセルからコマンドを実行するときは ! を先頭につける
コマンドのインストール
!pip install kaggle
ダウンロードしたkaggle.jsonを~/.kaggle/kaggle.json
に設置して、以下のコマンドを実行
!chmod 600 ~/.kaggle/kaggle.json
以上でkaggleコマンドが使えるようになる。コマンドについて、詳しくは以下のドキュメントを見る。
https://github.com/Kaggle/kaggle-api
kaggle.jsonの usernameパラメータを"KAGGLE_USERNAME"という環境変数に、
とkeyパラメータを"KAGGLE_KEY"という環境変数に渡す。
export KAGGLE_USERNAME=########## export KAGGLE_KEY=xxxxxxxxxxxxxx
もしくは、
import os os.environ['KAGGLE_USERNAME'] = ####### os.environ['KAGGLE_KEY'] = xxxxxxxxxxx # print("KAGGLE_USERNAME: " + os.environ["KAGGLE_USERNAME"]) # print("KAGGLE_KEY: " + os.environ["KAGGLE_KEY"])
以上でkaggleコマンドが使えるようになる。
メリットは、とにかく簡単。.kaggleフォルダを作って配置するだけ。
デメリットは、Google Colaboratoryが再起動したり、初期化されるたびに、わざわざkaggle.jsonを配置しなければならない。(フォルダやファイルは消えて初期状態に戻るため)
しかし、Google Colaboratoryではなく自分の実機パソコンでkaggleを行う場合、初期化はされないため、間違いなくこのやり方が良い。
メリットは、Google Colaboratoryが再起動したり、初期化されようが、再び実行するだけでよい(ファイルをいちいち手動で配置する必要がない)
デメリットは、ファイルの内容が他人に見せられない。理由は、環境変数で渡す時に、kaggle.jsonの内容が含まれているから。
そこでどうする...
[Google Driveにkaggle.jsonを配置]
Google DriveのMy Driveにkaggleフォルダを作り、kaggle.jsonを配置
当然ながら、colaboratoryが初期化されても、GoogleDriveは初期化されないので、毎回jsonファイルを読み込んで環境変数で渡せば良い。
Google Driveに接続
from google.colab import drive drive.mount('/content/drive')
GoogleDriveの「My Drive/kaggle/kaggle.json」から読み込んで、環境変数に渡す
import os import json f = open("/content/drive/My Drive/kaggle/kaggle.json", 'r') json_data = json.load(f) #JSON形式で読み込む os.environ['KAGGLE_USERNAME'] = json_data['username'] os.environ['KAGGLE_KEY'] = json_data['key'] # print("KAGGLE_USERNAME: " + os.environ["KAGGLE_USERNAME"]) # print("KAGGLE_KEY: " + os.environ["KAGGLE_KEY"])
これでkaggleコマンドが使える。
Google Colaboratoryが初期化されてもGoogle Driveから読み込むので問題なし。
認証トークンもバレずに済む!
・kaggleデータセットのダウンロード
!kaggle competitions download -c "コンペ名" -p "ダウンロードファイルが置かれるパス"
・ダウンロードファイルがzip形式の時に開封する
!unzip -u "zipファイルのパス"
・データをデータフレームで読み込む
import pandas
import os
DATA_FOLDER = '/root/dataset'
# DATA_FOLDER = '~/dataset' # 上と同じ意味 ~は /rootを意味する
train = pd.read_csv(os.path.join(DATA_FOLDER, 'train.csv'))
test = pd.read_csv(os.path.join(DATA_FOLDER, 'test.csv'))
・データフレームで読み込んだ後はきちんと確認
print("----------先頭データ----------") print(train.head(5)) print("-----------統計情報-----------") print(train.info()) print("-----------データの型-----------") print(train.dtypes) print("----------非存在-----------") print(train.isnull().sum()) print("----------欠損値-----------") print(train.isna().sum()) print("----------Shape----------") print(train.shape)
・kaggleに予測結果のcsvファイルを提出するとき
!kaggle competitions submit -c "提出するコンペ名" -f "提出するファイル" -m "メッセージ"
・データフレームをcsvファイルで出力(pandas)
MySubmissionDataframe.to_csv('submission.csv', index=False)
・データフレームをpickleファイルとして保存(python)
TrainingData.to_pickle('train.pkl')
pd.read_pickle('train.pkl')で読み込み
・配列や変数をpickleファイルとして保存(python)
pickle.dump(Y_predict, open('Y_predict.pickle', 'wb'))