Oracle Cloud Infrastructure Data Scienceで機械学習してタイタニック号の生存者を予測

#本投稿の背景
その１．機械学習を実施してみたい　(私は機械学習の知識は超初心者）
その２．お手軽に機械学習に触れてみたい
その３．機械学習で予想した結果が正しいかを知りたい

上記、３つを実施したいと思い、Oracle Cloud Infrastructure Data Scienceを使用して
機械学習をやってみた事を記事にしています。

※手順は詳細に記載しており、やってみようと思う方のお役に立てたら幸いです。

##その１．機械学習を実施してみたい(機械学習の知識は超初心者）
Oracle Cloud Infrastructure Data Science では、機械学習のワークフロー(データのロード、データの変換、データの可視化、モデルの学習、モデルの評価、モデルの解釈）が簡単にできます。

##その２．お手軽に機械学習に触れてみたい
Oracle Cloud Infrastructure Data Science を使用する際にかかる費用は、Oracle Cloud Infrastructure Data Scienceを動かすコンピュートの稼働のみ。使用しない場合はコンピュートを停止(非アクティブ化）すれば課金されませんので、お手軽に検証できます。

##その３．機械学習で予想した結果が正しいかを知りたい
Kaggleに機械学習のコンペがあり、初心者向けに「タイタニック生存者予測」で予想した結果を評価してくれます。

https://www.kaggle.com/c/titanic
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/04172e10-e05c-412c-5ed2-6a1766d52202.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/1ff73287-673e-8cb0-c8d0-52af082cda5d.png)
test.csvは、「Survived 列のみ」存在しない
**⇒test.csv の情報を使用して、「0:死亡 or 1:生存」　の結果を予想します**



**機械学習で予測した結果をKaggleに提出**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/39204a3b-69f9-72f6-1b8e-928ce557908d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/20c43261-00f6-bc47-f045-4c8f19ec954e.png)
※Oracle Cloud Infrastructure Data Scienceで予想結果を作成して提出します。
　結果は記事の最後に！

#Oracle Cloud Infrastructure Data Science をつかってみる
Oracle Cloud Infrastructure Data Science を使用する流れは以下になります。
**１．Oracle Cloud Infrastructure(OCI)の設定**
**２．Oracle Cloud Infrastructure Data Science で機械学習のワークフローを実施**
　**(データのロード、データの変換、データの可視化、モデルの学習、モデルの評価）**

##１．Oracle Cloud Infrastructure(OCI)の設定

※折りたたんでいるので、詳細は ▶　をクリックください
###１－１．Oracle Cloud Infrastructure Data Science の前提条件を確認

<details><summary>Oracle Cloud Infrastructure Data Science の前提条件を確認</summary><div>

[データサイエンス]-[プロジェクト]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/1932b18c-eef4-2ad4-2a9a-a39327814a5e.png)

[データ・サイエンスの前提条件]のリンクをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/2db6e952-84c6-c0ae-b028-9067ed0ef4d8.png)

前提条件を確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/e68c68a8-8615-5b8b-03cd-3fb26255a7c0.png)

</div></details>

###１－２．VCNとサブネットの作成

<details><summary>VCNとサブネットの作成</summary><div>
####１－２－１．コンパートメントの作成
Oracle Cloud Infrastructure Data Science 用のコンパートメントを作成して、そのコンパートメントにVCNとサブネットを作成します。

[アイデンティティ]-[コンパートメント]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/28d45700-bc79-7bbe-c3c8-47ca51acb369.png)
[コンパートメントの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/02db30b5-0c28-8951-1f8a-90c31d396782.png)
「名前」、「説明」、「親コンパートメント」を設定して、[コンパートメントの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/b9ef4ff2-c0dd-95f3-b0f6-e32104d38ecc.png)
コンパートメントが作成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/69ee31c7-172c-046e-33fc-0f39333cd39a.png)
[ネットワーキング]-[仮想クラウド・ネットワーク]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/3759bcec-321d-1995-46e1-e14fb49a30ad.png)
作成した「コンパートメント」を選択して、[VCNウィザードの起動]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/43aabb93-7b7d-33f6-14ce-bc216429f1d9.png)
[インターネット接続性を持つVCN]を選択して、[VCNウィザードの起動]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/111e4460-9d38-2d42-e4e7-7e2e06d93dec.png)
「名前」を入力、「コンパートメント」(作成したもの)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/77b1aa2d-43af-6af9-0a51-cbd6b0becf6e.png)
「CIDR」ブロックを確認して[次]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/16eeaffd-de08-eb2f-86ab-28cdda7de88f.png)
[作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/089731d2-1c02-5b36-aa47-bb3eec6438ba.png)
[仮想クラウド・ネットワークの表示]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/f5dba384-b2b9-92c0-c4d1-95f4abe34fae.png)
VCNができていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a8231e23-ee61-b833-f6a7-e195b783cc52.png)

</div></details>

###１－３．動的グループの作成
<details><summary>動的グループの作成</summary><div>

次の一致ルールを使用して動的グループを作成します:
ALL { resource.type = 'datasciencenotebooksession' }

[アイデンティティ]-[動的グループ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/ee677586-5cc6-6e84-bb62-57e166f48c34.png)
[動的グループの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/2740ccae-f235-8d6f-30d2-ceae8c7f8314.png)
「名前」、「説明」、「一致ルール」を入力して、[作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a82af2eb-997e-5387-3ec9-9b5adabe294d.png)
動的グループができたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/0e89c947-a76a-4ea8-571c-15137132f6f2.png)

</div></details>

###１－４．ポリシーの作成
<details><summary>ポリシーの作成</summary><div>
ポリシー (ルート・コンパートメントに作成)
・サービス・ポリシー
・非管理者ユーザー・ポリシー
・動的グループ・ポリシー

####サービスポリシーの作成
[アイデンティティ]-[ポリシー]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a5731aab-fd5a-bbae-3a61-efbc69813b4c.png)
[ポリシーの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/fcafdf7e-a6c9-b7c3-ac73-89056dab1c0c.png)
「名前」、「説明」、「コンパートメント」を設定して
ポリシー・ビルダーには指定された
「allow service datascience to use virtual-network-family in tenancy」を入力して
[作成]ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/18de3870-ffa7-46b0-5937-3c1b83064c88.png)
作成されたポリシーを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/029e8418-32e2-83c2-9936-1a0c4658bcea.png)

####非管理者ユーザー・ポリシーの作成
今回は非管理者は作成しませんでしたので、Administrators にポリシーを作成します
[アイデンティティ]-[ポリシー]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a5731aab-fd5a-bbae-3a61-efbc69813b4c.png)
[ポリシーの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/fcafdf7e-a6c9-b7c3-ac73-89056dab1c0c.png)
「名前」、「説明」、「コンパートメント」を設定して
ポリシー・ビルダーには指定された
「allow group <data-scientists> to use virtual-network-family in tenancy」
「allow group <data-scientists> to manage data-science-family in tenancy」
を入力して、[作成]ボタンをクリック(今回はAdministratorsにしています)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/e237ccf8-2d25-7bb0-8f66-dfe991adea97.png)


####動的グループ・ポリシーの作成
[アイデンティティ]-[ポリシー]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a5731aab-fd5a-bbae-3a61-efbc69813b4c.png)
[ポリシーの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/fcafdf7e-a6c9-b7c3-ac73-89056dab1c0c.png)
「名前」、「説明」、「コンパートメント」を設定して
ポリシー・ビルダーには指定された
「allow dynamic-group <dynamic-group> to manage data-science-family in tenancy」
※ここで、<dynamic-group>は動的グループの名前を表します
を入力して、[作成]ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/28e53168-9408-5556-b3b4-678b75801660.png)


作成されたポリシーを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/fed1e9e5-0aa8-23d2-1d69-416252b43b09.png)

</div></details>

##２．Oracle Cloud Infrastructure Data Science で機械学習のワークフローを実施

Oracle Cloud Infrastructure Data Science の環境を準備して、機械学習のワークフローを実施します。
※折りたたんでいるので、詳細は ▶　をクリックください
###２－１．Oracle Cloud Infrastructure Data Science の環境を準備

####２－１－１．プロジェクトの作成
<details><summary>プロジェクトの作成</summary><div>

プロジェクトを作成して、ノートブック・セッションを作成して、機械学習を実施します。
[データ・サイエンス]-[プロジェクト]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/1d15867e-dba6-8256-302e-2182f2a10400.png)
[プロジェクトの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/401c28b3-e646-6216-88f1-5efa46086c72.png)
「コンパートメント」は作成したコンパートメントを指定、「プロジェクト」に任意の名前を入力して
[作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/26a8c64d-d4ef-1e44-e511-d8a82f76524c.png)

</div></details>

####２－１－２．ノートブック・セッションの作成
<details><summary>ノートブック・セッションの作成</summary><div>

[ノートブック・セッションの作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/82df0eb9-4203-d301-540e-6256811739c6.png)
「コンパートメント」：作成したコンパートメント
「名前」：任意の名前を入力
「コンピュート・インスタンスのシェイプ」：VM Standard E2.2(一番小さいシェイプ)※課金に影響
「VCN」：今回作成したVCN
「サブネット」：今回作成したプライベートサブネット
上記を設定して、[作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/e8d380b1-b9d7-938d-a92d-20a67a392172.png)
少し時間がかかりますが、アクティブになり[開く]ボタンが押せる状態になったら、[開く]ボタンをクリック(ログイン画面がでますのでユーザ・パスワードを入力)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/604f007c-a2e1-d65e-49fe-1850d617df8f.png)
※使用しない時は[非アクティブ化]をクリックすることで課金されません。
　また、使用するときは[アクティブ化」をクリックします

</div></details>

####２－１－３．機械学習ライブラリをインストール

<details><summary>機械学習ライブラリをインストール</summary><div>

こんな画面が開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/5707bfcb-0936-c5e3-5b20-d720ae85568a.png)
初期状態ですと、機械学習ライブラリ群およびOracle独自のライブラリ"Accelerated Data Science(ADS)が入っていない環境になっていますので、インストールします。
[Environment Explorer]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/7dbc6645-5f53-94fb-9a60-7ad2c25b6af6.png)
Environment Explorer が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/99bf771c-97da-b15c-cb39-0e020007d963.png)
「GENERAL MACHINE LEARNING FOR CPUS」の[Install]をクリックすると
コマンドが表示されるので「コピー」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/c9665cd6-a6a9-424c-0cd6-2e3634d4a221.png)
ライブラリをインストールするコマンドを打つため、ターミナル画面を表示させる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a3d55d07-9054-7193-5574-cf9c5a5171d1.png)
さっきコピーしたコマンドを張り付けて実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/529af6a4-eea9-2f04-8199-2253f2ae9297.png)
「Python[conda env:mlcpuv1]」の環境がインストールされたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/4b8e5dc8-f307-96af-7217-e4c38a57c623.png)

</div></details>

####２－１－４．OCI CLI設定
Oracle Cloud Infrastructure Data Science で機械学習モデルを保存する際に設定が必要になります。

<details><summary>OCI CLI設定</summary><div>

画面右上の「＋」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/e8b6c9cc-4fcf-d65a-b139-5121ddb135ee.png)
[Terminal]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/bd80ded1-e937-7ec6-be9e-cf4fb81efd5a.png)
コンソールの画面が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a6448d3d-b7ba-c2ea-153e-4e864bf12e72.png)
oci setup config　を実行

```terminal
(base) bash-4.2$ oci setup config
    This command provides a walkthrough of creating a valid CLI config file.

    The following links explain where to find the information required by this
    script:

    User API Signing Key, OCID and Tenancy OCID:

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other

    Region:

        https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm

    General config documentation:

        https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm


Enter a location for your config [/home/datascience/.oci/config]: 
Enter a user OCID: <ユーザのOCID>
Enter a tenancy OCID: <テナンシのOCID>
Enter a region by index or name(e.g.
1: ap-chiyoda-1, 2: ap-chuncheon-1, 3: ap-hyderabad-1, 4: ap-melbourne-1, 5: ap-mumbai-1,
6: ap-osaka-1, 7: ap-seoul-1, 8: ap-sydney-1, 9: ap-tokyo-1, 10: ca-montreal-1,
11: ca-toronto-1, 12: eu-amsterdam-1, 13: eu-frankfurt-1, 14: eu-zurich-1, 15: me-dubai-1,
16: me-jeddah-1, 17: sa-santiago-1, 18: sa-saopaulo-1, 19: uk-cardiff-1, 20: uk-gov-cardiff-1,
21: uk-gov-london-1, 22: uk-london-1, 23: us-ashburn-1, 24: us-gov-ashburn-1, 25: us-gov-chicago-1,
26: us-gov-phoenix-1, 27: us-langley-1, 28: us-luke-1, 29: us-phoenix-1, 30: us-sanjose-1): <使用するリージョン>
Do you want to generate a new API Signing RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: Y
Enter a directory for your keys to be created [/home/datascience/.oci]: 
Enter a name for your key [oci_api_key]: 
Public key written to: /home/datascience/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase): 
Private key written to: /home/datascience/.oci/oci_api_key.pem
Fingerprint:ｘｘｘｘｘｘ
Config written to /home/datascience/.oci/config

    If you haven't already uploaded your API Signing public key through the
    console, follow the instructions on the page linked below in the section
    'How to upload the public key':

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2

(base) bash-4.2$ 

```
[アイデンティティ]-[ユーザ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/df08f1a9-8128-0541-9884-e99f8ea067c9.png)
Oracle Cloud Infrastructure Data Science を使用するユーザを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/63517403-a58c-ac96-e389-4308daba47ff.png)
[APIの追加]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/33829b6f-dbb4-b5f6-d159-db56bdee7042.png)
公開キーを確認してコピー

```console
(base) bash-4.2$ cd /home/datascience/.oci/
(base) bash-4.2$ cat oci_api_key_public.pem
```

コピーした公開キーを張り付け、[追加]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/7967b730-f3a4-ffbe-fd61-42081dafea78.png)




</div></details>


###２－２．Oracle Cloud Infrastructure Data Science を使ってみる

<details><summary>Oracle Cloud Infrastructure Data Science を使ってみる
</summary><div>
機械学習モデルのフォルダを作成してここに、kaggleからダウンロードしたcsv、ipynbファイルを置くようにします。

右クリックして[New Folder]を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/0bcd7a54-469a-fa55-7aca-cc043dfe8185.png)
フォルダ名を入力して、できたフォルダをクリックしてフォルダを移動します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/d7fb508e-6916-9dc1-9560-f631a2664388.png)
「＋」をクリックして Launcherを起動します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/822f589b-752b-fae6-bd4c-72cbe5b3dea6.png)
Python[conda env:mlcpuv1]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/bffde118-484e-b8e1-ebe3-40a66292574b.png)
ipynbの名前を変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/157f1d5b-381b-453c-97ee-71b8028b78df.png)
Kaggleからダウンロードした train.csv、test.csvをアップロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/ec5cb1f8-0490-aced-dff4-66eda4014beb.png)
pythonのコードは赤枠に記載して、 ▶　を押して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/be247cd4-fb88-4fc7-09e7-7f8bdd53e4f9.png)
実行中かどうかは画面左下のBusy(実行中)、idle(アイドル)で確認できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/336cf3d8-c10f-3cba-f2a1-8a3b2d443467.png)

Kaggleのデータを読み込み

```python
%matplotlib inline
%load_ext autoreload
%autoreload 2
import csv
import pandas as pd
import logging
import ads
from ads.dataset.factory import DatasetFactory
from ads.automl.provider import OracleAutoMLProvider
from ads.automl.driver import AutoML

titanic_df = pd.read_csv('train.csv')
titanic_ads = DatasetFactory.open(titanic_df).set_target('Survived')

```

読み込んだデータの可視化

```python
titanic_ads.show_in_notebook()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/6d7eab5c-0fbe-fe3f-8a45-e934ce95af63.png)

読み込んだデータに対するデータ変換の推奨案を表示

```python
titanic_ads.suggest_recommendations()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/e75a7718-4137-3a26-352c-0254c612eced.png)

提示された推奨案を適用

```python
titanic_ads = titanic_ads.drop_columns(["PassengerId", "Cabin","Ticket","SibSp","Ticket"])
titanic_ads = titanic_ads.fillna({"Age": 29.6991})
titanic_ads = titanic_ads.fillna({"Embarked": "S"})
titanic_ads
```
「PassengerId」などの列が消えていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/982f0ae4-6ad2-5043-f955-161fe4313194.png)

対応したデータを再度、推奨案がないかを確認

```python
titanic_ads.suggest_recommendations()
```
「Name」列をDropと推奨
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/a016698e-2772-99bb-72e0-38bdf014ccca.png)

「Name」列を削除

```python
titanic_ads = titanic_ads.drop_columns(["Name"])
titanic_ads 
```
「Name」列が削除されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/7431ce33-9e70-4f9f-40ab-6296d7d9981e.png)

再度、推奨案がないか確認

```python
titanic_ads.suggest_recommendations()
```
他に対応はなさそう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/54cf5a01-49d4-9b33-361a-9b9a273c992f.png)

トレーニングデータとテストデータに分割して、トレーニングデータを学習しモデルを作成

```python
train, test = titanic_ads.train_test_split(test_size=0.2)
ml_engine = OracleAutoMLProvider(n_jobs=-1, loglevel=logging.ERROR)
oracle_automl = AutoML(train, provider=ml_engine)
automl_model1, baseline = oracle_automl.train()
```

XGBClassifierのアルゴリズムを使用するそうだ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/c72fa51d-0bf3-f012-5544-12084442bfaa.png)

モデルの評価を実施。先ほど分割したテストデータを使用して評価して
リフトチャート、ゲインチャート、PR曲線、ROC曲線、混合マトリクスを表示

```python
from ads.common.model import ADSModel
from ads.evaluations.evaluator import ADSEvaluator
from ads.common.data import MLData

ads_evaluator = ADSEvaluator(test, models=[automl_model1, baseline], training_data=train) 

ads_evaluator.show_in_notebook(perfect=True)

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/119a507f-5ae4-2339-b954-2478452ebc80.png)



学習モデルの各評価指標を表示

```python
ads_evaluator.metrics
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/3f2a71b9-9cac-7b37-a318-897e884d9f92.png)

モデルカタログに登録
>出来上がったモデルはモデルカタログに登録します。モデルカタログとはプロジェクト内で構築済みモデルを共有するためめの仕組みです。
登録されたモデルは一旦リリース扱いとなり、プロジェクト内のユーザーに共有されます。
他のユーザーはモデルを流用することが可能ですし、そのモデルを更に強化して、再度共有することも可能です。

https://blogs.oracle.com/bigdata-dataintegration-jp/oracle-cloud-infrastructure-data-science

```python
path_to_model_artifact = "/home/datascience/titanic/model_qiita"
model_artifact =automl_model1.prepare(path_to_model_artifact, force_overwrite=True, data_sample=test, include_data_sample=True, data_science_env=True,fn_name="predictor")
```

作成したモデルを保存

```python
import os
compartment_id = os.environ["NB_SESSION_COMPARTMENT_OCID"]
project_id = os.environ["PROJECT_OCID"]
                        
mc_model = model_artifact.save(project_id=project_id, compartment_id=compartment_id, display_name="fn_titanic_ml", description="fn titanic_ml", training_script_path="titanic.ipynb", ignore_pending_changes=True)
```

保存したモデルをロード

```python
from ads.common.model_artifact import ModelArtifact
model_titanic = ModelArtifact(path_to_model_artifact)
model_titanic .reload()
```

Kaggleのtest.csvデータを読み込み、モデルを構築する際に使用した列にする。
プラス、欠損値の対応も実施

```python
test_df = pd.read_csv('test.csv')
del test_df["PassengerId"]
del test_df["Cabin"]
del test_df["Name"]
del test_df["Ticket"]
del test_df["SibSp"]
test_df = test_df.fillna({"Age": 29.6991})
test_df = test_df.fillna({"Embarked": "S"})
test_df
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/c5ff2179-43bd-62be-8da0-0611f776ee68.png)

test.csvのデータを、モデルを使用して生存予測を実施

```python
model_titanic.predict(test_df)
```
結果がかえる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/56fc92fd-ce3a-e85d-89ec-52f90bd3637e.png)

Kaggleに提出するcsvを作成する
まずは、生存予測結果をDataFrameに格納する

```python
result = model_titanic.predict(test_df)
result = result['prediction']
survived_df = pd.DataFrame({'Survived':result})
survived_df
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/6d9ca3e2-02a3-7975-3aac-cdec267c3abc.png)


次は 「PassengerId」　のみのDataFrameを test.csvから作成

```python
id_df = pd.read_csv('test.csv')
id_df = id_df[["PassengerId"]]
id_df
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/d9e84c1b-c861-f007-a847-821cd1f5de14.png)

「PassengerId」、「Survived」列で構成するDataFrameを作成

```python
resultdata= pd.concat([id_df, survived_df], axis=1)
resultdata = resultdata.set_index('PassengerId')
resultdata
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/f9bc1b8b-6c18-f965-7d0e-da0d91f154ac.png)

「PassengerId」、「Survived」列になったDataFrameを csvに出力

```python
resultdata.to_csv("result.csv")
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/48a478cd-f913-6fd2-086f-ffed92fcdca2.png)


csvファイルを選択して[右クリック]-[Download]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/33460e65-95e6-889b-108e-56a5c7ef3dd2.png)


このcsvをKaggleに提出！

</div></details>


#Oracle Cloud Infrastructure Data Science で作成した「タイタニック号の生存者予測結果」をKaggleに提出
作成したcsvをアップロードして[Submit Predictions]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/39204a3b-69f9-72f6-1b8e-928ce557908d.png)
結果は、76% でした。
**※2021年2月に予想した結果になります(日々、進化するのでいつ時点の結果かを追記)**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/ff63ea58-ec8d-a73b-a16b-cbe96a0c59e2.png)
私は機械学習の知識は超初心者ですが、Oracle Cloud Infrastructure Data Science 
を使うことで、機械学習して結果予測をすることができました。

#応用編：作成した予測モデルをアプリケーションに組み込む
Oracle Cloud Infrastructure Data Science　で作成した機械学習モデルをダウンロード、ダウンロードしたファイルをOracle Functionsにデプロイ、OCI API GatewayにOracle Functionsを組み込むことでアプリから機械学習モデルを利用することができます。
https://blogs.oracle.com/bigdata-dataintegration-jp/oracle-cloud-infrastructure-data-science
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/3e93241a-488f-1c4b-b2b1-cbb82182a011.png)
OCIの構成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/b4978da3-7bc6-00eb-7241-9644a4b0f2ed.png)


こんなサンプルを作ってみました。
画面では機械学習で使用する項目を入力して、[送信]クリックすると、
python が実行され、その中でAPI GETWAYのエンドポイントに問い合わせを行い結果(0:死亡、1:生存)を受け取り、画面に表示するようにしています。

|![ezgif.com-gif-maker11.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261475/705d2d5c-92c0-1b6c-e651-de6a3ee8bcfd.gif)|
|:--|

#参考URL
Oracle Data Science の製品情報
https://apex.oraclecorp.com/pls/apex/tcweb/r/docs/detail?id=32026

Oracle Accelerated Data Science (ADS) SDK(pythonコードのマニュアル)
https://docs.oracle.com/en-us/iaas/tools/ads-sdk/latest/index.html

Functions 、API Gateway の情報
https://oracle-japan.github.io/paasdocs/documents/faas/oraclefunctions/handson/getting-started/

Oracle Cloud Infrastructure Data Science のエッセンスをクイックレビュー
https://blogs.oracle.com/bigdata-dataintegration-jp/oracle-cloud-infrastructure-data-science

Oracle Data Scienceの製品ドキュメント
https://docs.oracle.com/ja-jp/iaas/data-science/using/data-science.htm

Kaggle
https://www.kaggle.com/