科学の箱

科学・IT・登山の話題

Python

kaggle Titanic Tutorial – 7

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

さて今回はAgeを補完してから、元の分布と比べてみる。


def fill_age(row):
  condition = (
    (d_train_g_m['Sex'] == row['Sex']) &
    (d_train_g_m['Pclass'] == row['Pclass']) &
    (d_train_g_m['title'] == row['title']) &
    (d_train_g_m['FamilySize'] == row['FamilySize'])
  )
  return d_train_g_m[condition]['Age'].values[0]

d_train = pd.read_csv('train.csv')
d_train['title'] = d_train['Name'].apply(get_title).map(Title_Dictionary)
d_train['FamilySize'] = d_train['SibSp'] + d_train['Parch'] + 1
d_train_g = d_train_g = d_train.groupby(['Sex','Pclass','title', 'FamilySize'])
d_train_g_m = d_train_g.median()
d_train_g_m = d_train_g_m.reset_index()[['Sex', 'Pclass', 'title', 'FamilySize', 'Age']]

d_train['Age'] = d_train.apply(lambda row: fill_age(row) if np.isnan(row['Age']) else row['Age'], axis=1)

d_train['Age'].hist(bins=70)

結果としては以下のようになった。

ちなみにオリジナルは以下である。

まだ突出したデータがあるがとりあえずは改善されている。この結果を基にして分析をしてみる。

関連するコードだけ記載する


d_train['Age'] = d_train.apply(lambda row: fill_age(row) if np.isnan(row['Age']) else row['Age'], axis=1)
d_test['Age'] = d_train.apply(lambda row: fill_age(row) if np.isnan(row['Age']) else row['Age'], axis=1)
d_train["Age"] = d_train["Age"].fillna(29.69911764705882)
d_test["Age"] = d_test["Age"].fillna(30.272590361445783)

kaggleに提出したが残念ながら結果はいまいちであった。

ツリーを検証すると以下のようになっている。

for name, importance in zip(["Pclass", "Sex", "Age", "Fare", "Embarked", "FamilySize", "title"], dtree.feature_importances_):
    print(name, importance)

Pclass 0.149357330313
Sex 0.435936591715
Age 0.136292322156
Fare 0.155380673517
Embarked 0.0141969919789
FamilySize 0.0965189783912
title 0.0123171119299

 

メタ情報

inarticle



メタ情報

inarticle



-Python
-,

執筆者:


comment

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

関連記事

no image

automated the boring – day8

https://automatetheboringstuff.com/chapter15/ さてプログラムを実行しているときに案外出てくる要件が時間計測。 例えばアルゴリズム間でパフォーマンスを比較す …

no image

kaggle Titanic Tutorial – 5

ファミリーサイズを追加してみる。 ソースはこちらを参照した。 https://www.kaggle.com/lperez/titanic-a-deeper-look-on-family-size 主要 …

no image

automated the boring

まずは肩慣らし print(‘Hello world!’) print(‘What is your name?’) # ask for their na …

no image

Anaconda Jupyterで自動補完を使う手順

まずはnbexensionsをインストール。これは拡張モジュールを管理する機能。 conda install -y -c conda-forge jupyter_contrib_nbextension …

no image

PythonでMicrosoft Visual C++ 14.0 is required エラーが出た場合

Visual Studio 2017だけでは不十分である。   https://visualstudio.microsoft.com/ja/downloads/から下記のリンク経由でBuil …

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

side bar top



アーカイブ

カテゴリー