LoginSignup
5
0

More than 5 years have passed since last update.

Kaggle Kernels環境で出力した結果ファイルが手動で submit できない時の解決法

Last updated at Posted at 2019-04-07

当たり前のこと過ぎるのかインターネッツに情報が見当たらなかったので、書いておきます。

Solution!

/kaggle/workingの下に 結果ファイル (submission.csvとか) は出力して下さい。
/kaggle の下とかだと、Outputがあると、Kaggle側に認識されません。
 
自分は間抜けなので、/kaggleにカレントディレクトリを変えていたために、この問題にずっとはまって、結局、無理やり Kaggle cli を Kernel内から叩けるようにして、それ経由で (kaggleコマンドの実行を notebooke に書いておいて) submit するとかアレなことをしてしまいました。
 
Kaggle cli を使うためには、おそらく API KEYを含む kaggle.json を Kernels 内にアップロードすることが必須で(環境変数で渡す方法はうまくいかなかった。し、そっちの方がnotebook内に残ってしまうので危ない)、セキュリティ的に大変よろしくない感じなので、真似はしない方がいいと思います。
♯ Kernelsって 閲覧権限を public に設定して他の人とノウハウを共有する的な側面もあるのでなおさら
 
なんか、Kernels環境で動かすためのバッドノウハウ的な知識も得られましたが、真似する人が出てもアレなので、書きません。
 
以上!
 

おまけ

最終的に手動submitできた自分のKernels
https://www.kaggle.com/ryogrid/titanic-self-submit?scriptVersionId=12589184
 
コードは下の記事でリンクされていた notebook のものを使わせていただきました。ありがとうございます!
Kaggleでタイタニックの生存者を予測をしてSubmitしてみた

補足

 2019年4月冒頭時点では、上記の私が参考にした記事が書かれた当時と Kernels 環境における、作業ディレクトリや入力データの配置が違うようなのでご注意。少なくともinputディレクトリは最初のカレントディレクトリ (/kaggle/working) の下ではなく、/kaggle/input にあります。
 関連して、データセットを追加でアップロードしたりすると、inputディレクトリ内の各種データファイルは、データセット名のディレクトリに分けて配置される(最初からあったデータは自分の所属するデータセットに対応する名前のフォルダが作られてそこに移る)ようなので、この点もご注意。最初から複数のデータセットが与えられているKernelsの場合は、最初からディレクトリは分かれている、と思います。

Kernels環境の仕様?やらは以下参照。ただ、やはりコンペに参加した場合にファイル出力先には言及がないですね。
https://www.kaggle.com/docs/kernels
 

ひとりごと

ちゃんとドキュメント読んでれば、このことって書いてあるのかな。
working から出るなボケ、でもいいんだけど。
 
 

5
0
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
5
0