ChatGPT＋NoteableでKaggleのtitanicコンペのsubmissionまで自動化できてしまった話

記事をほとんど書いたことがないので、結果だけを共有します。

ChatGPT＋NoteableでKaggleのtitanicコンペのsubmissionまで自動化できてしまいました。

## chatGPT pluginをオンにする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/6bf3606a-607d-24d8-6357-29901dd43e70.png)
課金していれば、来週までにsettingから選択できるようになるようです。

## Noteableと連携する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/5c7ce54e-1630-a8b0-ffe9-52f010bbec5f.png)
pluginのなかからNoteableを探し、インストールしてください（検索機能とか出来ないんですかね……？）。その後、上記のようにGPT-4を選択した際にプラグインを設定できるようになります。

Noteableを使ったことが無い場合はアカウント作成を求められるので、googleアカウントでもgithubアカウントでも連携してサクッと作成します。

## Noteable側で新しいnotebookを作成し、最初のcellリンクをchatGPTに教える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/db77ad37-c438-9119-4f0b-8c63771871dd.png)
この辺あまりスマートな方法が分からなかったのですが、新規notebookを作成し、添付画像のようにcellのリンクを取得後、chatGPTに教えてhellow worldさせてみます。

```
"最初のcellのURL"
これが最初のcellです。pythonでhello worldしてください。
```

結果は以下の通り
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/84d13d3b-3b7d-e830-0446-5799d6d7459b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/3452966f-ab65-8aad-9520-744f39c9fbba.png)
成功ですね。

## Kaggle Titanicデータセットの取得
早速titanicデータセットを取得させてみます。
promptは、
```
kaggleのtitanicコンペのデータを取得し、提出用データを作成するコードを順次作成し実行してください。エラーが出た場合は必要な修正を行い、再度実行することを繰り返して下さい。
```

としてみました。
結果は以下の通り。


```
了解しました。まずは、KaggleのTitanicデータセットを取得するためのコードを作成します。そのためには、まずKaggle APIをインストールし、Kaggleのアカウント情報を設定する必要があります。

以下のコードは、Kaggle APIをインストールし、Titanicデータセットをダウンロードするためのものです。ただし、このコードを実行する前に、Kaggleのユーザー名とAPIキーを環境変数に設定する必要があります。
```

```
!pip install kaggle
import os
os.environ['KAGGLE_USERNAME'] = 'your_username' # replace with your Kaggle username
os.environ['KAGGLE_KEY'] = 'your_key' # replace with your Kaggle key
!kaggle competitions download -c titanic
```
```
このコードを実行すると、Titanicのデータセットがダウンロードされます。その後、データの前処理とモデルの訓練を行うコードを作成します。

ただし、Noteableの環境ではKaggle APIのインストールや環境変数の設定が制限されている可能性があります。その場合、手動でデータセットをダウンロードし、Noteableにアップロードする必要があります。

```

そして次のprompt

```
最初のcellにこのコードをコピーしてください。その後、私がAPIキーを入力します。
```

返事が
```
Used Noteable
Kaggle APIのインストールとTitanicデータセットのダウンロードのためのコードをセルに追加しました。次に、あなたのKaggleのユーザー名とAPIキーを入力してください。その後、セルを実行できます。
```

ここでnoteableのページに移動し、手動でkaggleのusernameとAPIキーをセット。

![titanic.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/d8166d95-bdf9-6ebd-d4b3-d662598a989c.png)

かわいいですね。

## データの可視化
titanicデータセットがダウンロードできたので、簡単に可視化を指示してみます。データ選択も自動でできるかもしれませんが、今回は指定してみました。

```
まずはデータの可視化をしましょう。生存できるかどうかに影響しそうな項目について、matplotlibを用いていくつかグラフを作ってください。例えば、男女比や、階級によって生存に差がつくかどうかが一目でわかるグラフを作ってください。
```

```
Used Noteable
Used Noteable
Used Noteable
データの可視化が成功しました。以下のリンクから、作成したグラフをご覧いただけます。

生存者の性別別分布
生存者の乗客クラス別分布
これらのグラフから、性別と乗客クラスが生存率に影響を与えていることがわかります。次に何をしましょうか？
```

![titanic2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/90ae1310-933d-4c09-6d39-9bc271503d58.png)

![titanic3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/d9e06e47-11da-94d5-86b2-42f161ab0b63.png)

太字下線が引かれているところは作ったグラフの画像直リンクになっていました。細かい気配りまで出来る男（？）ですね。


## random forest modelによる推論と予測、提出
一気に提出までさせてみます。
提出ファイルの作り方はうまく思いつかなかったのでベタ打ちです。
```
いいですね。では、"Pclass", "Sex", "SibSp", "Parch"を用いてrandom forest modelを作成し、test dataを用いてSurvivedを予測し、demo_submission.csvを作成してください。
demo_submission.csvの作成には、output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})を参考にしてみてください。
```
回答はというと…
```
Used Noteable
Used Noteable
Used Noteable
Random Forestモデルの作成と予測が成功しました。そして、予測結果を含むdemo_submission.csvも作成されました。これで、KaggleのTitanicコンペティションへの提出が可能になりました。お疲れ様でした！

何か他にお手伝いできることがありますか？
```
お疲れさまもなにも、私は何もしていません。
Noteableを見てみると
![titanic4 - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/2e09e229-f458-108b-61af-068309ee5770.png)
完璧ですね。
では提出させてみましょう。
```
これをkaggle APIを用いて提出までできますか？
```

```
はい、Kaggle APIを使用して提出することができます。以下のコードを実行することで提出できます。
```
```
!kaggle competitions submit -c titanic -f demo_submission.csv -m "My submission"
ただし、このコードを実行する前に、Kaggleのユーザー名とAPIキーを環境変数に設定する必要があります。これは既に設定済みのはずですので、そのままコードを実行できます。
```
```
このコードを実行すると、提出が完了し、提出結果が表示されます。

ただし、Noteableの環境ではKaggle APIの提出機能が制限されている可能性があります。その場合、手動でKaggleのウェブサイトから提出する必要があります。
```
ここでGPT-4の回数制限に引っかかってしまったので、コードをコピペしてNoteable上で実行。
![titanic5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3392085/1bd02513-4402-e4a0-e7ce-2f78ce0890d1.png)

もちろん提出まで出来てしまいました。

見苦しい記事で恐縮ですが、共有まで。