科学の箱

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

特定のパッケージのためのgitignoreを作成したい

https://gitignore.ioを開く パッケージ名を入力 Createをクリック Related posts:pythonからoffice365 smtpを利用してメールを送信グラフの軸を操 …

no image

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

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

no image

K近傍法でデータを分析

K近傍法の手順 データ読み込み EDA スケーリング K選択前処理 モデル評価 K選択 モデル構築   K近傍法でデータを分析する際にはseabornのpairplotが役に立つ df = …

no image

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

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

no image

SIGNATE お弁当の需要予測-5

相関の概要を見てみる。これによりどの変数を利用して回帰するかを考える。 sns.heatmap(d_train_w.corr(),cmap=’coolwarm’) Related posts:data …

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

side bar top



アーカイブ

カテゴリー