科学の箱

科学・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

蟻本 P42 硬貨の問題

貪欲法の基本 その時点で最善の手を尽くす 尽くした結果を目的とする値に反映させる。 次善の手になるようにする。 1に戻る 硬貨の問題 A=int(input()) *C,=map(int,input( …

no image

Pillowのインストールは成功しているのにエラーが出る

from . import _imaging as core ImportError: DLL load failed: The specified module could not be found …

no image

python virtualenvの使い方

pip3 install virtualenv virtualenv myenv myenv/Scripts/activate Related posts:automated the boring – …

no image

pyplotでx軸のラベルを90度回転させる

pyplotでx軸にラベルを記載するとラベル文字数が長すぎるためにお互いにオーバーラップしてみにくい。 このよう場合にはpyplot.xticksを実行する際にrotationを指定すればよい。 Ro …

no image

kaggle Titanic Tutorial – 11

kaggleで人気があるlightGBMをつかってみる。   インストール pip install lightgbm 特に問題がなく終了。 コード、関係するところだけ記載。 split_be …

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

side bar top



アーカイブ

カテゴリー