科学の箱

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

SIGNATE お弁当の需要予測-3

Seabornを利用してデータをビジュアル化してみる。 まずは売り上げの分布図から sns.distplot(d_train[‘y’], kde=False, rug=False, bins=50) …

no image

pythonでjanomeを使う

PythonでMecabを利用して形態要素解析に挑戦したところMecabが原因不明のエラーを引き起こしいったん断念。 代わりにJanomeを導入してみた。 Janomeは下記からインストーラを取得する …

no image

kaggle Titanic Tutorial – 11

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

no image

Heroku + Python Day 1

Pythonでの機械学習の勉強が少し一段落したので、別の側面からPythonをさらに利用してみる。 現在はpythonを利用できるのはローカルの環境だけである。これを将来的にはインターネット上でスケジ …

no image

numpy.arange()を使って等差数列を生成する

等差数列を作るためにはnumpy.linspace()を使うと話をした。しかしlinspace()は要素数を指定するためにかえって混乱を招くことがある。そこで便利なのが公差を指定して配列を作ってくくれ …

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

side bar top



アーカイブ

カテゴリー