はじめに
今回は「Pytorchとfastaiではじめるディープラーニング」という本のデータセットの取得で普段とは違った方法でKaggle APIを利用したのですが、そこでエラーがでたり挙動が不安定だったためデータ取得の方法についてまとめました。
この本をやっている方でつまずく方が恐らくいると思ってます。参考になればうれしいです。
環境
- Google Colab
問題
9章のデータセットの取得で以下のコードでエラーが発生しました。
# hide
from fastbook import *
# ここでエラーがおきる
from kaggle import api
(省略)
発生したエラーは以下です。
OSError: Could not find kaggle.json. Make sure it's located in /root/.kaggle. Or use the environment method.
kaggle.json
がないです。と言われます。もちろんないので、本通りにコードを実行するのあればfrom kaggle impport api
を削除して、kaggle.json
を追加してから実行します。
削除したコードを実行します。
# 2つ目のセル
# hide
from fastbook import *
from pandas.api.types import is_string_dtype, is_numeric_dtype, is_categorical_dtype
from fastai.tabular.all import *
from sklearn.ensemble import RandomForestRegressor
from sklearn.tree import DecisionTreeRegressor
from dtreeviz.trees import *
from IPython.display import Image, display_svg, SVG
pd.options.display.max_rows = 20
pd.options.display.max_columns = 8
続けて、以下のセルも実行します。
# 3つ目のセル
# kaggleに登録してAccountからAPIキー(kaggle.json)をダウンロードする
creds = 'kaggle.jsonの内容をここにはりつける'
# 4つ目のセル
cred_path = Path('~/.kaggle/kaggle.json').expanduser()
if not cred_path.exists():
cred_path.parent.mkdir(exist_ok=True)
cred_path.write_text(creds)
cred_path.chmod(0o600)
# 5つ目のセル
path = URLs.path('bluebook')
path
# 6つ目のセル
# hide
Path.BASE_PATH = path
# 新たにセルを追加
from kaggle import api
そのあと、ダウンロードを行うため以下のセルを実行します。
if not path.exists():
path.mkdir(parents=true)
api.competition_download_cli('bluebook-for-bulldozers', path=path)
file_extract(path/'bluebook-for-bulldozers.zip')
path.ls(file_type='text')
すると、ここでもエラーがでます。
今回は、このエラーの対処法を中心に記事にします。
解決方法
ここで発生するエラーを解決するには以下の操作が必要です。
本には記載がありませんでした。
1. Kaggleからコンペのサイトにアクセスする
こちらにアクセスします。
このデータセットが使われるコンペBlue Book for Bulldozersのページとなります。
そこから、Rulesに移動し、I Understand and Accept
をクリックすることで利用が可能になります。
クリックした後はこのようになります。
また、
if not path.exists():
path.mkdir(parents=true)
api.competition_download_cli('bluebook-for-bulldozers', path=path)
file_extract(path/'bluebook-for-bulldozers.zip')
path.ls(file_type='text')
は1度ダウンロードに失敗するとキャッシュの影響でダウンロードができなくなるため、ランタイムの再起動を行う必要があります
。
すると、うまくダウンロードができるようになります。
さいごに
本を勉強していると、いつ本通りにできなくなるかひやひやします。
しかし、さすがオライリー。コードもすべてColabで用意されているので大体のものは本通りに動かせます。(本が間違っており動かないものもありますが、サンプルコードは動きます)
そのような中で動かないコードは珍しいですがなんとか動くようになってよかったです。