LoginSignup
9
0

More than 1 year has passed since last update.

Taitanicやってみた

Last updated at Posted at 2021-12-22

はじめに

こんにちは。今回はtaitanicやっていこうと思います。初心者であり文字列データの処理を飛ばしてしまいますが、ご了承ください。モデルとしてはニューラルネットワークを使用しています。工夫点は欠損値をKNNImputerで埋めてみたことくらいです。

taitanic提出手順

1.ライブラリ、データ読み込み
2.データの前処理
3.モデルの構築
4.予測の出力・提出

実行環境

google colaboratory

1.ライブラリ、データ読み込み

それでは早速、ライブラリとデータを読み込むところからやっていきます。

# Google Colaboratoryで作業する場合はこちらも実行してください。
from google.colab import drive
drive.mount('/content/drive')
#各種インポート
import numpy as np
import pandas as pd
import seaborn as sns
%matplotlib inline
from matplotlib import pyplot as plt

ファイルを読み込みます

#テストファイルの読み込み
test_df = pd.read_csv("../input/titanic/test.csv")
#トレーニングデータの読み込み:訓練データ
train_df = pd.read_csv("../input/titanic/train.csv")
#生存or死亡についてのデータ
test_output_df = pd.read_csv("../input/titanic/gender_submission.csv")

2.データの前処理

まず、はじめの10データを見てみます。

df.head(10)

欠損値があるか確かめます。

df.isnull().sum() 

トレーニングデータについても同様に確かめます

df_test.isnull().sum()

欠損値があるage以外の特徴量は削除しました。

df.drop('Cabin', axis=1, inplace=True)
df_test.drop('Cabin', axis=1, inplace=True)

#df.drop('Age', axis=1, inplace=True)
#df_test.drop('Age', axis=1, inplace=True)

df.drop('Fare', axis=1, inplace=True)
df_test.drop('Fare', axis=1, inplace=True)

df.drop('PassengerId', axis=1, inplace=True)
df_test.drop('PassengerId', axis=1, inplace=True)

#df.drop('Pclass', axis=1, inplace=True)
#df_test.drop('Pclass', axis=1, inplace=True)

df.drop('Name', axis=1, inplace=True)
df_test.drop('Name', axis=1, inplace=True)

df.drop('Ticket', axis=1, inplace=True)
df_test.drop('Ticket', axis=1, inplace=True)

df.drop('Embarked', axis=1, inplace=True)
df_test.drop('Embarked', axis=1, inplace=True)

df.isnull().sum() 

カテゴリー変数を数値に置き換え、欠損値AgeをKNNImputerでうめてあげます。

df.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True)
df_test.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True)
from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=5)
df = pd.DataFrame(imputer.fit_transform(df))
df_test = pd.DataFrame(imputer.fit_transform(df_test))

XにtrainのSurvive以外、yにtrainのSurveveを入れます。
X_testは、そのままです。.shapeにて形を確認しておきます。

X = df.iloc[:, 1:].values
y = df.iloc[:, 0].values

X_test = df_test.iloc[:, 0:].values
print(X_test.shape)
print(X.shape)
print(y.shape)

ホールドアウト方にて、データを分割します。

X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.3, random_state=42)

隠れ層を100,100,10としたニューラルネットワークをモデルとし、予測します。

mlpc = MLPClassifier(hidden_layer_sizes=(100, 100, 10), random_state=0)
mlpc.fit(X_train, y_train)

print('Multilayer Perceptron \n')
print('Train Score: {}'.format(round(mlpc.score(X_train, y_train), 3)))
print(' Test Score: {}'.format(round(mlpc.score(X_valid, y_valid), 3)))

.predictメソッドにて予測値をpredに代入します。

pred = mlpc.predict(X_test)
print(pred.shape)

submissionの'Survived'列を予測値で置き換えます。

submission['Survived'] = pred
submission
# JupyterLabなどローカルで作業する場合
# パスは必要に応じて変更の必要あり
submission.to_csv('../gender_submission.csv', index=False)

ダウンロードして完了です。

# Google Drive・Google Colaboratoryで作業する場合
submission.to_csv('gender_submission.csv',index=False)
from google.colab import files
files.download('gender_submission.csv')

最後に

本当は、DataWizを用いた欠損値補完をやろうと思いましたができませんでした。もしよければお願いします。

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0