Kaggle PR

【Google Colab対応】kaggle-apiの使い方|データの読み込みから提出まで

記事内に商品プロモーションを含む場合があります

 

Google Colab上でKaggle-apiを用いて、データの読み込みから提出の流れを説明します。

勉強中のため、間違いを含んでいる可能性をご留意してください。

 

Google Colabの導入

 

Google Colabを導入していない方は下記を参考にGoogle Colabを導入してください。

【10分完了】Google Colaboratoryのインストール法・使い方Google Colabは、GPUを使用できるため、低コストかつ高速で機械学習の実装を行う際に必要不可欠なツールです。本記事では、Google Colabのインストール方法と注意事項を10〜15分程度でまとめました。...

 

Google ColabでKaggleのデータを使用する準備

 

まずは、Google ColabでKaggleのデータをダウンロードしたり、結果を提出するための準備を行います。

具体的には以下の流れです。

  1. Kaggle APIをインストール
  2. Kaggle.jsonをGoogle Colab上にアップロード
  3. Google Colabratory上にKaggle.jsonをダウンロード

 

Kaggle APIをインストール

 

下記を入力してGoogle ColabにKaggle APIをインストールしてください。

!pip install kaggle

 

Kaggle.jsonを取得

 

Kaggle.jsonを取得するためには、まずKaggleアカウントページを開いてください。

次に、『Account』タブに行き、『Create API Token』を選択します。

これにより、kaggle.jsonをダウンロードすることができます。

ダウンロードが完了したらGoogleドライブにアップロードしてください(特に場所の指定はありません)

または下記のコードを入力して、kaggle.jsonファイルをアップロードすることができます(参考 : How to use the Kaggle API from Colab

from google.colab import files

uploaded = files.upload()

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))

!mkdir -p ~/.kaggle/ && mv kaggle.json ~/.kaggle/ && chmod 600 ~/.kaggle/kaggle.json

 

 

Google Colab上にkaggle.jsonをダウンロード

 

下記を入力し、Googleドライブ上からGoogle Colab上にkaggle.jsonをダウンロードしましょう。

from googleapiclient.discovery import build
import io, os
from googleapiclient.http import MediaIoBaseDownload
from google.colab import auth

auth.authenticate_user()

drive_service = build('drive', 'v3')
results = drive_service.files().list(
        q="name = 'kaggle.json'", fields="files(id)").execute()
kaggle_api_key = results.get('files', [])

filename = "/content/.kaggle/kaggle.json"
os.makedirs(os.path.dirname(filename), exist_ok=True)

request = drive_service.files().get_media(fileId=kaggle_api_key[0]['id'])
fh = io.FileIO(filename, 'wb')
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print("Download %d%%." % int(status.progress() * 100))
os.chmod(filename, 600)

引用 : Kaggle API with Colab

 

実行するとGoogleアカウント認証ページが表示されるので、認証作業を完了させましょう。

認証されると『Download 100%』と表示されます!

これでGoogle Colab上でKaggleを行う準備ができます。

 

kaggle APIの使用方法

 

ここからは、具体的にKaggle APIの使用方法を紹介していきます。

コンペティションの情報を確認

 

下記を入力することで現在開催されているコンペティションの内容を確認することができます。

!kaggle competitions list

 

 

データの読み込み

 

まずは、Kaggleにアクセスしコンペティションのdataに移動し下記のコマンドをコピーしてください。

Kaggleのデータをインポート具体例として『House Prices – Advanced Regression Techniques』を使用

 

コピーしたコマンドをGoogle Colab上に貼り付けましょう。

貼り付ける際は、以下のように『!』を忘れずに入力するようにしましょう。

!kaggle competitions download -c house-prices-advanced-regression-techniques

 

zipファイルのデータはcsvデータに変換するため以下を入力しunzipしましょう。

# unzip
!unzip /content/house-prices-advanced-regression-techniques.zip

 

これでcsv形式のデータを得ることができます。

 

結果をsubmit

 

下記を入力することでGoogle Colabから結果をsubmitすることができます。

今回も具体例として『house prices advanced regression techniques』の『sample_submission.csv』を提出してみます。

# submit
!kaggle competitions submit -c house-prices-advanced-regression-techniques -f /content/sample_submission.csv -m "Message"

 

<output>

100% 31.2k/31.2k [00:00<00:00, 88.1kB/s]
Successfully submitted to House Prices - Advanced Regression Techniques

 

これが表示されれば無事提出できています。

 

Kaggle Datasetにファイルをアップロード

 

最近は、制約のあるKaggleコンペも増えてきて、学習をGoogle Colab(または別の環境)で行い、推論のみKaggle notebookで行うコンペも増えてきました。

そのため、Google Colabで学習した重みのファイル等をKaggle Datasetにアップロードする方法を紹介します。

まずは、アップロードしたいファイルを含むフォルダを自分の環境に作成してください。

そして、そのフォルダ上に以下を入力して、dataset-metadata.jsonというファイルを生成してください。

!kaggle datasets init -p [datasetにアップロードしたいフォルダPATH]

 

フォルダPATHを設定しないと、デフォルトでカレントディレクトリが選択されます。

dataset-metadata.jsonというファイルは以下のような内容が書かれています。

{
  "title": "INSERT_TITLE_HERE",
  "id": "<user name>/INSERT_SLUG_HERE",
  "licenses": [
    {
      "name": "CC0-1.0"
    }
  ]
}

 

titleは、新たに作成するKaggle Datasetの名前になります。

dataset-metadata.json上のtitleidは、自分の好きな文字列に書き換えることができます(*titleは6〜50字の範囲で書き換えるという制約はあります)

最後に、以下を実行するとアップロードしたいファイルがアップロードされます。

kaggle datasets create -p [アップロードしたいフォルダPATH]

 

これでファイルのアップロードが完了です。

自分のKaggleアカウントのDatasetから確認してみましょう。

 

参考資料

 

  • Kaggle API : Kaggle API GithubはKaggle APIの便利な機能が詳しく載っています。

 

まとめ

 

今回は、Kaggle APIを使用してGoogle Colab上でKaggleデータセットを使用したり、コンペ内容を確認する方法を紹介しました。

Google Colabプロを使用してコンペに出場してみたいという方は参考にしてください。

 

ABOUT ME
努力のガリレオ
【運営者】 : 東大で理論物理を研究中(経歴)東京大学, TOEIC950点, NASA留学, カナダ滞在経験有り, 最優秀塾講師賞, オンライン英会話講師試験合格, ブログと独自コンテンツで収益6桁達成 【編集者】: イングリッシュアドバイザーとして勤務中(経歴)中学校教諭一種免許取得[英語],カナダ留学経験あり, TOEIC650点
Python学習を効率化させるサービス

 

Pythonを学習するのに効率的なサービスを紹介していきます。

まず最初におすすめするのは、Udemyです。

Udemyは、Pythonに特化した授業がたくさんあり、どの授業も良質です。

また、セール中は1500円定義で利用することができ、コスパも最強です。

下記の記事では、実際に私が15個以上の講義を受講して特におすすめだった講義を紹介しています。

 

【最新】UdemyでおすすめのPythonコース|東大生が厳選!10万を超える講座があるUdemyの中で、Pythonに関係する講座を厳選しました。また、本記事では、Udemyを使用しながらPythonをどのような順番で勉強するべきかを紹介しました。ぜひ参考にしてください。...

 

他のPythonに特化したオンライン・オフラインスクールも下記の記事でまとめています。

 

【最新】Pythonに強いプログラミングスクール7選|東大生が厳選Pythonの流行と共に、Pythonに強いプログラミングスクールが増えてきました。本記事では、特にPythonを効率的に学ぶことができるプログラミングスクールを経験をもとに厳選して、内容を詳しく解説しています。...

 

自分の学習スタイルに合わせて最適なものを選びましょう。

また、私がPythonを学ぶ際に使用した本を全て暴露しているので参考にしてください。