【python:機械学習】タイタニックのデータを分析してみる(1)

2019年12月9日

最近、色々と作っているのですが機械学習やディープラーニングの必要性を感じています。

特にアプリ系。

以前は企業のwebシステム等を作ってたので、悩んだりする事はなかったのですが、面白いものを作ろうと思うと必要な知識かなと思うようになりました。

少し前は何でもかんでも「AI」が話題になってたので毛嫌いしてましたが(苦笑)

とりあえず、取り掛かりの良いところで「日経ソフトウェア:2019年1月号」の特集1をやってみてます。

タイタニック号で機械学習をやってみようって奴です。

ボチボチと誌面を参考にコードの打ち込み……なんだか懐かしいw

pythonも初心者なので色々調べながらです。

描画系は苦手なので、関数や引数を調べながらボチボチと。

ただ、誌面だとGoogle Colabでやってるのですが、セッションが切れたらアップデートしたcsvファイルも消えるようなのでSpyderでやっています。

とりあえず、データの前処理あたりまで。

plot辺りは別途メモしておいた方が良いかな……

サクッとグラフ表示されると、何となくできてる気がします(笑)

# -*- coding: utf-8 -*-
“""
Created on Sun Nov 3 06:40:56 2019

@author: Masaki
“""

import pandas as pd
import numpy as np

#データ可視化ライブラリ
import matplotlib.pyplot as plt

#機械学習ライブラリ
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import accuracy_score
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC

# データここから -> https://www.kaggle.com/c/titanic/data
train_set = pd.read_csv('train.csv’)
test_set = pd.read_csv('test.csv’)

fig = plt.figure(figsize=(12, 6))
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)

ax1_2 = fig.add_subplot(223)
ax2_2 = fig.add_subplot(224)

# SipSp(同乗中の兄弟/配偶者の数)
SibSpPlot = train_set['Survived’].groupby(train_set['SibSp’]).mean()
ax1.bar(x=SibSpPlot.index, height=SibSpPlot.values)
ax1.set_ylabel('Survival Rate’)
ax1.set_xlabel('SibSp’)
ax1.set_xticks(SibSpPlot.index)
ax1.set_yticks(np.arange(0, 1.1,.1))
ax1.set_title(“Class and Survival Rate")

# Parch(同乗中の親/子供の数)
ParchPlot = train_set['Survived’].groupby(train_set['Parch’]).mean()
ax2.bar(x=ParchPlot.index, height=ParchPlot.values)
ax2.set_ylabel('Survival Rate’)
ax2.set_xlabel('Parch’)
ax2.set_xticks(ParchPlot.index)
ax2.set_yticks(np.arange(0, 1.1,.1))
ax2.set_title(“Gender and Survival Rate")

#PClass(旅客等級)
PClassPlot = train_set['Survived’].groupby(train_set['Pclass’]).mean()
ax1_2.bar(x=PClassPlot.index, height=PClassPlot.values)
ax1_2.set_ylabel('Survival Rate’)
ax1_2.set_xlabel('PClass’)
ax1_2.set_xticks(PClassPlot.index)
ax1_2.set_yticks(np.arange(0, 1.1,.1))
ax1_2.set_title(“Class and Survival Rate")

# Sex(性別)
GenderPlot = train_set['Survived’].groupby(train_set['Sex’]).mean()
ax2_2.bar(x=GenderPlot.index, height=GenderPlot.values)
ax2_2.set_ylabel('Survival Rate’)
ax2_2.set_xlabel('Gender’)
ax2_2.set_xticks(GenderPlot.index)
ax2_2.set_yticks(np.arange(0, 1.1,.1))
ax2_2.set_title(“Gender and Survival Rate")