【Python 메모】Google Colaboratory에서 Kaggle API를 사용하는 엄청난 코드&작법

Google Colaboratory의 편의성이 훌륭하고 Python 데이터 분석 환경은 거의 이것 하나로 시행 착오하는 나입니다.
Kaggle에서의 대회 참가도 Colaboratory상에서 통일할 수 있을까? 그래서,
KaggleAPI를 Colaboratory상에서 실행하는 엄청난 코드&작법입니다.
뭔가 잘못 등이 있으면 지적하실 수 있으면 기뻐합니다! !

Google 드라이브 사용



Kaggle API와 관련이 없지만 처리 상 Google Drive를 사용하는 것이 가장 효율적이라고 생각하므로,
Google Drive를 사용할 수 있게 하는 마운트 처리에서.

Google Drive 래퍼를 설치합니다.
코드를 실행하면 괜찮습니다.
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse

인증 토큰을 생성.
URL이 발행되므로 액세스하여 토큰을 복사합시다.
from google.colab import auth
auth.authenticate_user()

Google Drive 라이브러리의 인증 토큰도 생성, copipe.
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

아래에서 마지막. drive 바로 아래의 파일이 표시되면 성공.
!mkdir -p drive
!google-drive-ocamlfuse drive

print ('Files in Drive:')
!ls drive/

Kaggle API 준비



먼저 Kaggle 명령을 노트북에 설치합니다.
!pip install kaggle

그런 다음 아래에서 Kaggle API 토큰을 생성합니다.kaggle.json 파일을 다운로드합니다.

https://www.kaggle.com/(사용자 이름)/account

kaggle.json 파일을 Google 드라이브의 원하는 위치에 저장합니다.
파일명은 바꾸지 않는 것.

다음 코드에서 API를 사용할 수 있도록 합니다.
덧붙여 이 코드는 Kaggle Forum에서 정보 제공해 주신 하나님의 코드 그대로 인용입니다.
감사합니다.

  • useful Google Labs tool for people playing with data science and deep learning (Kaggle Forum)

  • This notebook provides a recipe for using Kaggle API with Colab (Colaboratory)
  • 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 사용



    자, 시도해 봅시다.

    경쟁 목록을 검색해 봅니다.
    !kaggle competitions list
    

    이런 리스트가 돌아오면 성공


    대회 데이터 다운로드도 시도합니다.
    Google 드라이브의 디렉토리에 다운로드해 봅시다.
    크기가 큰 파일은 남은 용량에 중요합니다.

    Kaggle의 Competite 사이트에서 다음 API 명령을 복사합니다.


    Google Colaboratory에 붙여넣기.
    선두에 익스클라메이션 마크(!)를 붙이는 것을 잊지 말고.
    여기에서는 데이터를 다운로드하는 디렉토리를 다음과 같습니다.drive/Colab Notebooks※Colaboratory 파일을 작성하는 방법에 따라 drive/Colab Notebooks 아래에 파일이 생성됩니다.
     이 디렉토리명이 귀찮고, 반각 스페이스가 들어가 있습니다.
    Linux명령을 쓸 때는, 반각 스페이스의 전에 \ 가 필요하게 되므로 주의합시다.
    kaggle competitions download -c titanic -p drive/Colab\ Notebooks
    
    # カレントディレクトリにダウンロードする場合は以下
    # !kaggle competitions download -c titanic -p.
    

    데이터 세트가 지정된 디렉토리에 다운로드되면 성공
  • gender_submission.csv
  • test.csv
  • train.csv

  • Kaggle API의 자세한 사양은 다음 GitHub에서 공개됩니다.
    Kaggle API

    (덤) 현재 디렉토리 변경



    로컬 환경과 마찬가지로 Colaboratory에서도 현재 디렉토리를 지정할 수 있습니다.
    import os
    os.getcwd() # 現在のカレントディレクトリの取得
    
    os.chdir('/content/drive/Colab Notebooks') # カレントディレクトリを指定
    os.getcwd()
    

    이제 현재 디렉토리가 변경되었는지 확인할 수 있어야 합니다.
    그리고는 아래와 같이 보통으로 데이터를 취득하면 OK.
    import pandas as pd
    train = pd.read_csv('train.csv')
    train.head()
    

    Enjoy! Colaboratory and Kaggle!!

    참고



    참고로 해 주신 프로페셔널 분들의 기사 정리
  • Google 공동체사 시작
  • Google 공동체 내에서 이미지와 CSV 파일에 액세스하는 것이 어려웠습니다.
  • 【초속으로 무료 GPU 사용】 심층 학습 실천 Tips on Colaboratory
  • kaggle-api라는 Kaggle 공식 api가 베타 버전으로 나왔기 때문에 사용법을 조사해 보았습니다.
  • 좋은 웹페이지 즐겨찾기