Kaggleコンペの提出データをKernelから提出する

# はじめに
Kaggleに参加して数週間。Kaggle内をさまよったり、Youtubeで入門動画をみたりして
どうやってコンペに参加するのか、コンペってそもそも何なのか？など調べた。

で、自分なりにKaggleのコンペにデータを提出する方法はいくらかあることまではわかった。
　１．Kaggleが提供するKernelでデータを作って提出する
　２．MyPCでデータを作って、提出する
　３．VPC(AWSやGCPなど)でデータを作って提出する。

最初は３．でしかデータ提出できないとおもってたけど、１．でも出せる方法を知り
これがやり方がわかるととても便利で使いやすいことがわかったのでメモに残す。

# 参考サイト
コンペのデータ提出にあたって参考にさせてもらいました。
https://note.mu/toshioakaneya/n/na582cb273153

# 前提
Kaggleに登録済みの人が前提です。
登録の仕方については別の記事を探してください。
まぁ。。。TOP画面行くと、登録の案内があり、そこでGoogleアカウントと連携するだけなのでそんなに難しくないですけど。

# 手順
1. コンペに参加する
2. KernelでNotebookを作成する
3. Notebook上で提出データを作る
4. 提出データをコンペに提出する

今回は、House Prices: Advanced Regression Techniques(https://www.kaggle.com/c/house-prices-advanced-regression-techniques)
を題材に説明。

## 1. コンペに参加する
お手本画像はすでに参加済みなので別物になっているけど
これから参加するコンペであれば「Join Competition」となっているのでクリック
![キャプチャ_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/d9ac9e14-a8ca-453e-7254-6f1219410dad.png)

## 2. KernelでNotebookを作成する
コンペの説明画面に移る。
ここで[Kernel]タブをクリックし、[New Notebook]クリック
![キャプチャ2_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/a3ebd090-95ab-28ff-2d9a-91408a49ab47.png)

Notebookを選択。
![キャプチャ3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/57b181da-6bc2-9373-5afe-fb2703ea2501.png)

Notebookの編集画面表示。
Notebookの名前はデフォルトだと適当な名前になるが、名前をクリックすると簡単に編集できる。
NotebookのつくりはJyupiterNotebookと一緒なので細かい説明は割愛。
右側のペインはNotebookの実行環境・性能を表示しているのでまぁ参考までに。
![キャプチャ4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/efa27134-8962-3f3c-6f4b-502cdff8247c.png)

デフォルトで書かれているScriptをクリックすると、
ディレクトリ構造を表示してくれる。inputディレクトリにコンペのテストデータ類が
予め取り込まれた状態になっている。親切。
![キャプチャ5_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/9121b723-de5b-c0bb-2221-f314394a487c.png)

## 3. Notebook上で提出データを作る
コンペ次第だとは思うけど、今回題材にした「House Prices: Advanced Regression Techniques」では
inpuディレクトリに提出データのお手本がある。
すごい強引だけどこれを提出データとして提出する。
普通の試験だとシバかれるけどKaggle的には全く問題なし。懐が深い。

お手本データをそのまま提出データにするスクリプトがコチラ

```
#ファイルの読み出し
submission = pd.read_csv('../input/sample_submission.csv')
#ファイルの書き出し
submission.to_csv('submission.csv', index=False)
```

やってることは、ファイルのコピーでも十分なんだけど
一応、データ提出を想定したお手本なので、学習モデルを使って提出データを作って
それをコンペの提出データ用にcsv形式で出力した、という流れをイメージして
to_csv()メソッドを使っている（つもり）

![キャプチャ6_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/42da89ab-6edd-891e-eb3a-0b678f9a2879.png)

できたかどうか見てみよう。ってことで確認スクリプトを実行

```
for dirname, _, filenames in os.walk('./'):
    for filename in filenames:
        print(os.path.join(dirname, filename))
```
これはカレントディレクトリ上のファイルを確認してる。
さっきCSV出力した提出データはここに置かれていることがわかる。
ちなみにこの場所にファイルを置いてないと、このあとの提出画面で提出データを認識してくれないっぽい。

![キャプチャ7_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/5d881e24-688b-bb1a-3ffc-b84c6c0f4532.png)

## 4. 提出データをコンペに提出する
ようやく念願のデータ提出。作っただけだとダメでちゃんとCommitする。

![キャプチャ7_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/6f5b068b-c76a-6d72-5bad-fdd53d71583f.png)

Commitがおわったら、こんな感じになるので「Open Version」でNotebookのTOPへ移動する。
もちろん「return to editor」を教えて別ルートからNotebookのTOPへ移動してもOK
![キャプチャ8_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/0046d40e-bd90-95dc-f8f0-92ca2031b0cf.png)

左ペインのOutputをクリック
![キャプチャ9_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/87ace351-04c7-6467-cf67-33061a384e71.png)

Output欄にジャンプする。
Output Filesの箇所に先ほど作成したsubmission.csvがあり、「Submit to Competition」が
アクティブ化しているのでコイツをクリック。
![キャプチャ10_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/2913a709-aa5e-9998-86f5-efc8cba17b26.png)

これで提出完了。
赤丸部をクリックすると、自分の順位の箇所へジャンプする。
![キャプチャ11_1.png](https://qiita-image-store.s3.apnortheast-1.amazonaws.com/0/416263/355df86c-43a9-0bdf-e0cb-7e4f6b7d1803.png)

今回の例はお試しということもあり自己ベストを越えなかったこともありちょっと出るところが
思った場所に出なかったけど、こんな感じで自分のランキングの場所へ飛んでくれる。
![キャプチャ12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/c0692b32-2216-00e5-aa19-50d447422afd.png)

～おしまい～