科学の箱

科学・IT・登山の話題

Python

kaggle Titanic Tutorial – 1

投稿日:2018年5月21日 更新日:

KaggleでTitanic tutorialにチャレンジしてみる。

Titanic: Machine Learning from Disaster
https://www.kaggle.com/c/titanic

ライブラリ読み込み


import numpy as nm
import pandas as pd
import seaborn as sns

%matplotlib inline

データの読み込み


d_train = pd.read_csv('train.csv')
d_test = pd.read_csv('test.csv')

データの確認


d_train.head()
d_test.head()

 

トレーニングデータに存在して、テストデータに存在しない項目があるか確認する。このような項目は分析には使えないので削除対象となる。今回は特にそのような項目はない。

次に使えなさそうなデータを見てみる。PasssengerID, Name, Ticketは役に立たなさそうなのでドロップ対象とする。

nullがある項目としては明らかなのはCabin。それ以外にもあるかもしれないので確認する。

レコード数を確認する。


d_train.shape

(891, 12)


d_test.shape

(418, 11)

データの基本統計量を確認する。


d_train.desribe()


d_test.describe()

 

欠損値の概要を見てみる。


sns.heatmap(d_train.isnull(),yticklabels=False,cbar=False,cmap='viridis')

有効データ数を確認


d_train.count()

PassengerId 891
Survived 891
Pclass 891
Name 891
Sex 891
Age 714
SibSp 891
Parch 891
Ticket 891
Fare 891
Cabin 204
Embarked 889
dtype: int64

無効なデータを確認


d_train.isnull().sum()

PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64

Testデータも同様に確認


d_test.count()

PassengerId 418
Pclass 418
Name 418
Sex 418
Age 332
SibSp 418
Parch 418
Ticket 418
Fare 417
Cabin 91
Embarked 418
dtype: int64


d_test.isnull.sum()

PassengerId 0
Pclass 0
Name 0
Sex 0
Age 86
SibSp 0
Parch 0
Ticket 0
Fare 1
Cabin 327
Embarked 0
dtype: int64

欠損値に対する方向性を確認する。Age,Embarked,Fareは保管する、Cabinは欠損値が多いので削除。

 

不要の項目を削除する。


d_train = d_train.drop(['PassengerId','Name','Ticket','Cabin'], axis=1)
d_test = d_test.drop(['Name','Ticket','Cabin'], axis=1)

d_train.head()
d_test.head()

Embarkedを埋める。Embarkedはカテゴラルデータであり、2件だけ欠損している。最頻値を利用する。


pd.value_counts(d_train['Embarked'])

S 644
C 168
Q 77
Name: Embarked, dtype: int64


d_train["Embarked"] = d_train["Embarked"].fillna("S")

次にFareを保管する。Fareは連続値なのでとりあえず中央値を利用する。


d_test['Fare'].mean()


35.6271884892086



d_test["Fare"] = d_test["Fare"].fillna(35.6271884892086)

Ageも連続値なので中央値を利用する。


d_train['Age'].mean()
d_train["Age"] = d_train["Age"].fillna(29.69911764705882)
d_test['Age'].mean()
d_test["Age"] = d_test["Age"].fillna(30.272590361445783)

最後に文字列であるカテゴラルデータを数値に変換する。


from sklearn.preprocessing import LabelEncoder
LE=LabelEncoder()

labels = ['Embarked','Sex']
for label in labels:
d_train[label]=LE.fit_transform(d_train[label])
d_test[label]=LE.fit_transform(d_test[label])

データクレンジングの結果を確認する。


d_train.head()

d_test.head()

 

メタ情報

inarticle



メタ情報

inarticle



-Python
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

kaggle Titanic Tutorial – 6

さて、今回は年齢について検証する。まずこれまでは中央値を使っていたわけだ。これをもともと年齢分布と中央値を使って更新した後の年齢分布を比較する。 import numpy as nm import p …

no image

pycharmでターミナルからconda環境を利用する

pycharmでTerminalを開く conda環境を開く %windir%\System32\cmd.exe “/K” C:\ProgramData\Anaconda3\S …

no image

RoboBrowserで提供しているメソッドget_linksにおけるパラメータの指定方法

get_linksは便利だが文字列を指定する際に少々手間取った。 結論から言うと文字列で指定する方法とre.compileオブジェクトを指定する方法の2つがある。 まず一つ目は単純な文字列。exact …

no image

Pythonで文字列を生成するときの方法についてまとめる

Pythonで文字列を生成するときには様々な方法があるのでまとめる。 まず最も基本となるのは生成したい文字をシングルクォーテーションもしくはダブルクォーテーションで囲む方法である。どちらの方法を使って …

no image

NumPyを使ってみる

Pythonでデータ分析の勉強を始めるとまず初めに出てくるパッケージ numpy。これはそもそも何か。 numpyのuser documentを読みながらいじってみる。 https://docs.sc …

2018年5月
« 4月   6月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー