【初心者用】機械学習Titanicチュートリアル

## はじめに
機械学習を勉強し始めましたので、Kaggleの初心者向けTitanicチュートリアルをやってみました。
kaggleでコンテストの詳細とフローを学び、最初の提出を行いました。

## Challenge
Titanicの乗客データ（name, age, price of ticket, etc）を使用して、誰がSurvived、誰がDeadかを予測する

### Data
データには、3つのファイルがあります。
（1）train.csv、
（2）test.csv
（3）gender_submission.csv

#### (1) train.csv
891 passengers詳細データ、
![ML_train_data.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/ce5d54d2-885d-70fb-8b2d-7e747e4dafb1.png)
Survivedカラムの値で、aliveかdeadの判断できるデータ。
1の場合, survived
0の場合, dead

####(2) test.csv
上記のtrain.csvファイルで見つけたパターンを使用して、test.csv内の他の418人の乗客がSurvivedかどうかを予測する。
test.csvファイルにはSurvivedカラムがないです。

####(3) gender_submission.csv
予測をどのように考えるかの例です。
この例で、すべての女性の乗客→Survived、すべての男性の乗客→Deadことを予測しています。
PassengerIdとSurvivedのカラムMUSTで入ってれば、違う予測を考えても良いです。

## Code
ここで予測を改善するために、機械学習モデルをトレーニングします。

コードを実行するために好きのnotebookを使う,私kaggle notebookを使ってました。 
・kaggle notebook/jupyter notebook/google colab

・データが保存されている場所が示される
![ML1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/da7f2909-86b0-e182-03a6-72873a81cb61.png)

・データをロードする
![ml_py2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/52fe4494-4356-c7f1-e883-24109e788b1d.png)

![ml-py3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/b57251fb-c178-d14d-73f3-ae5555e02d1c.png)
* ↑head()で最初の5行しか表示されない

**GOAL**:
test.csvの乗客がSurvivedかどうかを予測するのに役立つtrain.csvのパターンを見つけたい!

#### pattern探し
今回は、一番最初に例としてもらった、パターンを使います。
gender_submission.csv、(Assume)
・すべての女性の乗客 → Survived
・すべての男性の乗客 → Dead

このパターンがtrain.csvデータに当てはまるかどうかを確認する
![ml-py4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/534ce0f8-a716-fad1-7d9a-b5715edd09ac.png)
上記の結果を見ると、75%女性の乗客がSurvived

一つのカラムのみで予測するのも中々難しいので、色んなカラムを使ってmachine learning modelでやる。

### 最初の機械学習モデル
random forest modelをbuildする
![ml-random-forest-model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/412b9dac-f210-a1b9-5cd5-6178782c8e3f.png)

データの以下のカラム、"Pclass", "Sex", "SibSp", and "Parch"でパターンを検索するモデルです。
train.csvのパターンに対して、random forest modelでtreeを作成し、test.csvのデータに対してpredictionsする。（->submission.csv)
![ml-py5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/6877b7f6-8139-c02f-e286-8215ebbbb926.png)

**結果**：
![ml-result-py.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/c608d529-f18c-e7b6-4f4d-42c16b297093.png)

* 上記のデータの詳細を確認方法、グラフ化表示
    * train_data.info　を実行するとファイルの詳細確認できる
![ML2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/1c8b2668-250e-68b6-7528-a624eda683e0.png)


    * shape、describeでレコード数と形を確認
![ML3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/0e090571-adfb-31a6-eddd-abdc30cc67f8.png)


    * 最後にmatplotlib、seabornを使って結果をグラフ化にしてみました。
![ML4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/9ca5c182-0102-463e-5d9b-c73d76992c5c.png)
![ML5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475245/0e3a71b9-4240-b6bd-8610-4424238c1d8d.png)


1回目の勉強ここまででした。
機械学習、モデルなどを勉強中です↓。次のtopicも勉強終わったら記事にまとめます。
https://www.kaggle.com/learn/intro-to-machine-learning

参考：
https://www.kaggle.com/
https://www.geeksforgeeks.org/random-forest-classifier-using-scikit-learn/
https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.head.html