LoginSignup
14
6

More than 1 year has passed since last update.

Google ColabでSIGNATE APIを使う

Last updated at Posted at 2021-05-26

Google ColabでSIGNATEのデータセットをダウンロードする方法を備忘録的に記す。

事前準備

  1. SIGNATEのアカウント設定画面で "API Token" の "作成" をクリック
  2. "新規作成" をクリックしてAPI Token(signate.json)を取得
  3. ダウンロードしたsignate.jsonをGoogle Drive上のどこかにアップロードする。

Google ColaboratoryでAPIの認証を実行

以下のコードを実行する。

!pip install signate

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 = 'signate.json'", fields="files(id)").execute()
signate_api_key = results.get('files', [])

filename = "/root/.signate/signate.json"
os.makedirs(os.path.dirname(filename), exist_ok=True)

request = drive_service.files().get_media(fileId=signate_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)

認証コードを取得するためのURLが表示されるため、アクセスし、認証コードをコピペする。


Download 100%.

と表示されれば成功。

SIGNATEで開催されているコンピ一覧の表示

以下のコードを実行する

! signate list
  competitionId  title                                                              closing     prize             submitters
---------------  -----------------------------------------------------------------  ----------  --------------  ------------
              1  【練習問題】銀行の顧客ターゲティング                               -                                   4772
             24  【練習問題】お弁当の需要予測                                       -                                   5810
             27  【練習問題】Jリーグの観客動員数予測                                -                                   1200
            100  【練習問題】手書き文字認識                                         -           Knowledge                140
            102  【練習問題】タイタニックの生存予測                                 -           Knowledge                631
            103  【練習問題】音楽ラベリング                                         -           Knowledge                 46
            104  【練習問題】スパムメール分類                                       -           Knowledge                101
            105  【練習問題】毒キノコの分類                                         -           Knowledge                207
            106  【練習問題】アワビの年齢予測                                       -           Knowledge                310
            107  【練習問題】国勢調査からの収入予測                                 -           Knowledge                468
            108  【練習問題】画像ラベリング(20種類)                               -           Knowledge                209
            112  【練習問題】ワインの品種の予測                                     -           Knowledge                272
            113  【練習問題】山火事の消失面積予測                                   -           Knowledge                 66
            114  【練習問題】レンタル自転車の利用者数予測                           -           Knowledge                326
            115  【練習問題】アヤメの分類                                           -           Knowledge                284
            116  【練習問題】活動センサーログからの動作予測                         -           Knowledge                 27
            118  【練習問題】テニスの試合結果の予測                                 -           Knowledge                 48
            121  【練習問題】自動車の走行距離予測                                   -           Knowledge               1084
            122  【練習問題】自動車の評価                                           -           Knowledge                283
            123  【練習問題】オゾンレベルの分類                                     -           Knowledge                 22
            124  【練習問題】ボットの判別                                           -           Knowledge                252
            125  【練習問題】ガラスの分類                                           -           Knowledge                 65
            126  【練習問題】林型の分類                                             -           Knowledge                 13
            127  【練習問題】ゲーム選手のリーグ分類                                 -           Knowledge                 10
            128  【練習問題】ステンレス板の欠陥分類                                 -           Knowledge                 13
            129  【練習問題】都市サイクルの燃料消費量予測                           -           Knowledge                 19
            130  【練習問題】天秤のバランス分類                                     -           Knowledge                 10
            132  【練習問題】ネット広告のクリック予測                               -           Knowledge                128
            133  【練習問題】画像ラベリング(10種類)                               -                                    315
            135  【練習問題】ネット画像の分類                                       -                                     67
            262  【SOTA】国立国会図書館の画像データレイアウト認識                   2100-12-31  -                         11
            263  【SOTA】産業技術総合研究所 衛星画像分析コンテスト                  2100-12-31  -                         18
            264  【SOTA】マイナビ × SIGNATE Student Cup 2019: 賃貸物件の家賃予測    2100-12-31  -                        217
            265  【練習問題】健診データによる肝疾患判定                             -                                    317
            266  【練習問題】民泊サービスの宿泊価格予測                             -                                    295
            267  【SOTA】海洋研究開発機構 熱帯低気圧(台風等)検出アルゴリズム作成  2100-12-31  -                         10
            268  【SOTA】オプト レコメンドエンジン作成                              2100-12-31                            14
            269  【SOTA】アップル 引越し需要予測                                    2100-12-31  -                        171
            270  【SOTA】Weather Challenge:雲画像予測                              2100-12-31  -                          3
            271  【SOTA】JR西日本 走行中の北陸新幹線車両台車部の着雪量予測          2100-12-31  -                          2
            288  【SOTA】Sansan 名刺の項目予測                                      2100-12-31  -                         12
            294  【練習問題】債務不履行リスクの低減                                 -                                     92
            358  【練習問題】機械稼働音の異常検知                                   -                                     42
            404  【練習問題】モノクロ顔画像の感情分類                               -                                     17
            406  【練習問題】鋳造製品の欠陥検出                                     -                                     72
            409  【練習問題】株価の推移予測                                         -                                     76
            444  パナソニック株式会社 間取り図解析アルゴリズム作成                  2021-06-30  総額¥2,000,000            86

コンペのデータセットをダウンロード

今回はリスト表示した中の108番のデータセットをダウンロードしてみます。
まずは以下のコードを実行して、108番のデータ一覧を表示します。

! signate files --competition-id=108
  fileId  name               title                                    size  updated_at
--------  -----------------  ----------------------------------  ---------  -------------------
     313  train.zip          学習用画像データ                    117694558  2018-06-26 23:12:54
     314  test.zip           評価用画像データ                     23554059  2018-06-26 23:14:56
     315  label_master.tsv   ラベルマスタ                              419  2018-06-26 23:16:23
     316  train_master.tsv   学習用画像データとラベルIDの対応表     975020  2018-06-26 23:17:07
     317  sample_submit.csv  応募用サンプルファイル                4212460  2018-06-26 23:17:33

続いて、こちらのファイルをダウンロードしてみます。
以下のコードを実行。

! signate download --competition-id=108
label_master.tsv

train_master.tsv

sample_submit.csv

test.zip

train.zip


Download completed.

ダウンロードが完了しました。

train.ziptest.zipはzip形式なので解凍します。

! unzip train.zip
! unzip test.zip
(略)
  inflating: test/test_09997.png     
  inflating: test/test_09998.png     
  inflating: test/test_09999.png 

ディレクトリ内のファイル一覧を見てみます。

%ls

一覧は以下です。

adc.json          sample_data/       test/     train/            train.zip
label_master.tsv  sample_submit.csv  test.zip  train_master.tsv

例えば、trainデータを読み込みたいときは、ディレクトリは以下のように指定。

./train/

追記

  • 特定のデータをダウンロードする

今回は、108番のコンペのファイルIDが313をダウンロードする場合は、--file-id=の後に番号を記載する。

! signate download --competition-id=108 --file-id=313
14
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
6