KaggleのHouse Prices - Advanced Regression Techniquesをgoogle colabで動作させる手順

## 初めに
- kaggleのHouse Pricesのチュートリアルをgoogle colab上で行いたく。手順を下記にまとめてみました。


## kaggleのAPI Tokenの取得

Kaggleにログインしてaccountページ「https://www.kaggle.com/＜username＞/account」 に遷移し、[Create API Token]をクリックすると、kaggle.jsonファイルがダウンロードされる。そしてgoogleドキュメントにkaggle.jsonファイルをアップロードする


## 手順

- 画面右上のアイコンをクリックして「account」ボタンをクリックする

![スクリーンショット 2021-12-02 16.47.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/6b6f6971-cbd4-1d7f-217e-211c12aa3adb.png)



- 「Create New API Token」ボタンをクリックする
![スクリーンショット 2021-12-02 16.49.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/22069e5d-826e-f584-21d2-c1c93944dc36.png)


- ダウンロードしたkaggle.jsonファイルの内容は下記になります。
```
{"username":"tsuyoshimoritalogic","key":"<生成されたAPI Token>"}
```

- kaggle.jsonファイルをgoogleドライブの任意のフォルダに配置する
![スクリーンショット 2021-12-02 17.27.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/0d8b6558-6974-0da1-4ce2-536b63f922f8.png)



## google colabでgoogleドキュメントをマウントする
- google colabのcontentフォルダ内にdriveと言う名前でgoogleドキュメントをマウントする。下記のコマンドをgoogle colabで実行する
```
from google.colab import drive
drive.mount('/content/drive')
```

- 実行すると下記の様にURLが表示されるので、そちらをクリックし、authorization codeが表示されたら、そのcodeをコピーして青枠の入力欄にコピーし、Enterを押すとマイウントされる。

![スクリーンショット 2021-12-02 17.07.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/3aead9a4-1b16-c872-f3c1-140fa4a5ccf5.png)


- google colab上でcdコマンドを利用してマウントした対象のフォルダへ移動するとMyDriveというフォルダに移動して「ls -all」コマンドを実行するとgoogleドキュメントのファイルやフォルダを確認することができます。
![スクリーンショット 2021-12-02 17.23.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/d09bdabf-c6d4-d16e-d905-7bb6bd523b05.png)


- kaggle.jsonを配置したパスを指定してcatコマンドを実行するとkaggle.jsonのファイルの中身を確認することができたので、正しくマウントできたことを確認することができる。私の場合、googleドキュメントの「Colab Notebooks」というフォルダにkaggle.jsonファイルを設置したので下記の様なパスの指定になっております。 
![スクリーンショット 2021-12-02 17.29.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/4d6d0c04-28bf-a025-7cf4-33e628a41b81.png)

## gogole colabでkaggle apiを利用するための手順

1. kaggleをインストールする

```
!pip install kaggle
```

2. 「.kaggle」フォルダを作成する

```
!mkdir ~/.kaggle/
```

3. googleドキュメントに配置したkaggle.jsonファイルを「.kaggle」フォルダにコピーする

```
!cp /content/drive/MyDrive/'Colab Notebooks'/kaggle.json ~/.kaggle/
```

4.パーミッションを600に変更する

```
!chmod 600 ~/.kaggle/kaggle.json
```

上記の手順をgoogle colabで実行するイメージは下記の様になります。
![スクリーンショット 2021-12-02 17.41.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/be7eed2b-8486-2773-f9fc-589e2b02d462.png)


## google colab上でkaggleの住宅データをダウンロードする

- 下記のコマンドを実行する。
```
!kaggle competitions download -c house-prices-advanced-regression-techniques
```

####　上記のコマンドを実行した時に下記のエラーメッセージが表示された場合
```
Warning: Looks like you're using an outdated API Version, please consider updating (server 1.5.12 / client 1.5.4)
403 - Forbidden
```

- 下記のコマンドを実行すると回避できる
```
!pip install --upgrade --force-reinstall --no-deps kaggle
```

####  上記のコマンドを実行した時に「403 - Forbidden」が表示された場合


- https://www.kaggle.com/c/house-prices-advanced-regression-techniques/rules
のURLにアクセスして頂き、「I Understand and Accept」ボタンをクリックしてください。
![スクリーンショット 2021-12-02 17.51.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/dcca7549-560c-a033-30e0-4d7adac4e385.png)


- クリック後、下記のメッセージが表示されたら設定完了です。
-
![スクリーンショット 2021-12-02 17.52.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/ff3896bd-f9a5-6c57-54a0-2716cb6c1fd2.png)

## ダウンロードした住宅価格のデータを解凍する

- 下記のコマンドを実行する。
```
!unzip /content/drive/MyDrive/'Colab Notebooks'/house-prices-advanced-regression-techniques.zip
```
※「kaggle competitions download」コマンドでダウンロードしたデータは現在、利用中のgoogle colabが置いてあるフォルダにダウンロードされる。


## ダウンロードしたCSVファイルをpandaで読み込み
- 下記のコマンドを実行しデータフレームの内容が表示されたら、チュートリアルをようやく動かせる状態となる。

```
import pandas as pd

df = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/train.csv")
print(df)
```

![スクリーンショット 2021-12-02 18.06.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538654/2bec67f8-0234-6e1c-fb6d-f3574c490609.png)

##　次回
- google colab環境でHouse Pricesデータを動かせる状態になったので、色々と検証していきたいと思います。