グーグルコラボラトリー
Contents
1. グーグルコラボラトリー¶
1.1. グーグルドライブの設定¶
1.1.1. ドライブのマウント¶
グーグルドライブをグーグルコラボラトリーと連携する方法を紹介します.最初に,このグーグルコラボラトリーが動いている計算機にどのようなファイルが置かれているかを確認します.以下のように Linux のコマンドを打ちます.
! ls
Note
先頭に !
をつけてコマンドを打つと,それは Python でなくてこの計算機のシェルのコマンドとして認識されます.
上のコマンドを実行した結果 sample_data
とだけ表示されました.これは Google が最初からこの計算機に置いてくれている機械学習のサンプルデータが入ったフォルダです.使うことはありません.次に,以下のようなプログラムを実行することで,自身のグーグルドライブをこのグーグルコラボラトリーが動いている計算機にマウント(この計算機から自身のグーグルドライブにアクセスできるようにする行為)します.
#!/usr/bin/env python3
from google.colab import drive
def main():
drive.mount("/content/drive", force_remount=True)
if __name__ == "__main__":
main()
このプログラムを実行すると以下のようなメッセージが出てきます.「Google ドライブに接続」を選択します.
その後もアクセスを許可するための選択肢を選ぶとマウントが完了します.マウントが完了したら以下のコマンドを打って,グーグルドライブにアクセスが可能になったかを確認します.
! ls
drive
というフォルダが追加されています.以下のように打つと,MyDrive
というフォルダを確認できます.これが自身のグーグルドライブのフォルダです.
! ls drive
すなわち,drive/MyDrive
がマウントしたグーグルドライブの場所です.
Note
この /
は,その左に書かれている名前のフォルダの中に,その右に書かれている名前のフォルダが存在していることを示しています.つまり,drive/MyDrive
は drive
というフォルダの中に存在している MyDrive
を意味します.
1.1.2. フォルダの作成¶
Kaggle に参加するためにグーグルドライブ内に「kaggle」という名前のフォルダを作成すると便利なので以下のコマンドで作っておきます.(以下のコマンドでは「kaggle」というフォルダの中にさらに「token」というフォルダを作成しています.)
! mkdir -p drive/MyDrive/kaggle/token
グーグルのメニューからグーグルドライブにアクセスすると「kaggle」という名前のフォルダが生成されているはずです.また,上で確認した方法と同様に以下のコマンドを打ってもそのフォルダの存在を確認できます.
! ls drive/MyDrive
1.2. Kaggle の設定¶
1.2.1. Kaggle へのサインイン¶
以下の URL から Kaggle にアクセスし,サインインします.新たに Kaggle のアカウントを作成する必要はありません.グーグルアカウントでサインインできます.

以下のようなユーザー名を決める画面等が出るので指示に従って進めます.

1.2.2. Kaggle API Token¶
グーグルコラボラトリーから Kaggle へは Kaggle API というものを使ってアクセスするのですが,そのために必要な Kaggle API Token というものを Kaggle の公式ページからダウンロードします.そのために,公式ページの「Account」にアクセスし,その後,「Create New API Token」をクリックしてファイルをダウンロードします.Kaggle のトップページに表示されている自身のユーザー名をクリックすると「Account」にアクセスするページに到達できます.

この操作によって「kaggle.json」という名前のファイルをダウンロードできましたが,今度はこのファイルをグーグルドライブ内の,上の操作で作成した kaggle/token
にアップロードします.以下のコマンドを打って「kaggle.json」が確認出来たら成功しています.
! ls drive/MyDrive/kaggle/token
この Kaggle API Token をこのグーグルコラボラトリーで利用するために以下のプログラムを実行します.
#!/usr/bin/env python3
import os
import json
def main():
fin = open("/content/drive/MyDrive/kaggle/token/kaggle.json", "r")
json_data = json.load(fin)
fin.close()
os.environ["KAGGLE_USERNAME"] = json_data["username"]
os.environ["KAGGLE_KEY"] = json_data["key"]
if __name__ == "__main__":
main()
Hint
公式ページの「Account」には「setting」→「API」→「create New Token」で到達できます.
1.2.3. API のインストール¶
Kaggle を利用するための API である Kaggle API をインストールする必要があります.以下のコマンドでインストールできます.
! pip3 install kaggle
Kaggle API を使えばコマンドラインから様々なことができるようになります.例えば,以下のようなコマンドを打つことで Kaggle で開催しているコンテストのリストを確認することができます.
! kaggle competitions list
1.3. Kaggle の実行¶
1.3.1. 例題¶
ここでは,以下の URL からアクセスできる問題に取り組みます.「Allstate Claims Severity」と題されています.Allstate は保険会社です.顧客が保険金を請求する際にその保険金を請求するための主張がどれほど深刻なのか,重大なのかを判断するための指標である重大度を予測する問題です.構造化されたデータが提供されており,機械学習の初学者用のデータセットです.トレーニングデータセットのサイズが程よく大きく,過去の参加者の成績が散らばっているためこれを選びました.
https://www.kaggle.com/c/allstate-claims-severity
Hint
この問題に取り組むために Rules というタブをクリックして確認できる,この問題のルールを理解して承諾することを確認する部分をクリックしてください.

Kaggle を初めて利用する場合,以下のような電話番号の確認画面が出ます.

送られてきたコードを入力すると以降の操作が可能になります.

1.3.2. 作業用フォルダの作成¶
これから Kaggle よりデータセットをダウンロードしますが,データをカレントディレクトリにダウンロードすると,他の問題に取り組みたいときにデータセットをダウンロードした場合に名前が重複してしまったり,また,グーグルコラボラトリーが初期化されてしまったときにファイルを残せなかったりと不便なので,グーグルドライブ内に新たなフォルダを作ります.最初に,以下のようなプロジェクトフォルダを作ります.
! mkdir -p /content/drive/MyDrive/kaggle/project
作成した project
フォルダ内に allstate
というフォルダを作成します.
! mkdir -p /content/drive/MyDrive/kaggle/project/allstate
1.3.3. ダウンロード¶
データセットのダウンロードの方法は以下のページに書かれている通りです.Kaggle API を使ったダウンロード法が示されています.
https://www.kaggle.com/c/allstate-claims-severity/data
ここではこのコマンドを少し変えて,以下のコマンドでダウンロードします.オプション -p
を加えることで,ダウンロード先を指定しているのです.
! kaggle competitions download -c allstate-claims-severity -p /content/drive/MyDrive/kaggle/project/allstate
データがダウンロードできたことは以下のコマンドで確認できます.
! ls /content/drive/MyDrive/kaggle/project/allstate
以下のように !
ではなくて %
を加えて使った Linux のコマンドは永続的に実行されます.このようにすることで現在のディレクトリを /content/drive/MyDrive/kaggle/project/allstate
に変更できます.
%cd /content/drive/MyDrive/kaggle/project/allstate
Hint
このようにカレントディレクトリをプロジェクトのフォルダに設定しておくのが便利だと思います.
以下のようにして,ダウンロードしたファイル allstate-claims-severity.zip を解凍します.
! unzip allstate-claims-severity.zip
回答の結果,sample_submission.csv,test.csv,train.csv というファイルが得られたと思います.train.csv は学習データセット,test.csv はテストデータセットです.
Hint
圧縮されているファイルを解凍する必要はありません.大きなファイルサイズのデータは解凍してはいけません.そのまま Python で読み込んで処理します.
中身は以下のような感じで見ることができます.
! head -n 15 sample_submission.csv
1.3.4. 解析の手順¶
ここから先の解析についてはこのコンテンツではお教えしません.色々な解析ができると思いますので色々とやってみてください.
データセットの中身を確認する
データを可視化する
データを整形する
機械学習する
データはグーグルトライブ内にダウンロードしたのでウェブブラウザからグーグルドライブにアクセスすると中身を GUI で確認することもできます.
Kaggle に取り組む際のコツがあります.以下の「Discussion」というページには参加者らが自分たちの疑問や知識をディスカッションした結果が残されています.これを読むと問題に対する理解が深まります.
https://www.kaggle.com/c/allstate-claims-severity/discussion
また,以下の「Code」というページを読むこともとても有用です.
https://www.kaggle.com/c/allstate-claims-severity/code
まずはこれらを読んで全体を把握するのが良いのだと思います.
1.3.5. 結果の投稿¶
テストデータセットに対して行った結果は sample_submission.csv と同じフォーマットに整えます.これを Kaggle に投稿しますが,この操作も API を利用して行うことができます.投稿に必要なコマンドは以下のページに示されています.
https://www.kaggle.com/c/allstate-claims-severity/submit
ここでは,sample_submission.csv をそのまま投稿してみます.-f
によってファイルの場所を指定します.以下のように打ちます.-m
のところには何かしらのメモを書くことができます.カレントディレクトリを変更していない場合は -f
に指定する値はそのファイルの場所を正確に記述してください.
! kaggle competitions submit -c allstate-claims-severity -f sample_submission.csv -m "Message"
成功すると以下のようなメッセージが表示されるはずです.
Successfully submitted to Allstate Claims Severity
以下のページ,My Submissions というページですが,ここにアクセスすると投稿した結果の評価値を得ることができます.
https://www.kaggle.com/c/allstate-claims-severity/submissions
以下のページ,Leaderborad の結果を超えられるように頑張ってください.
https://www.kaggle.com/c/allstate-claims-severity/leaderboard
Note
終わりです.頑張ってください!