科学の箱

科学・IT・登山の話題

Python

kaggle Titanic Tutorial – 4

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

名前から取得できるタイトルを分析に利用してみる。

タイトルは末尾に”.”がついているのでこれを利用して切り出す。


def get_title(name):
  if '.' in name:
    return name.split(',')[1].split('.')[0].strip()
  else:
    return 'Unknown'

d_train = pd.read_csv('train.csv')
d_train['title'] = d_train['Name'].apply(get_title)

これを実行してからタイトルの値を取得する。

pd.value_counts(d_train['title'])

Mr 517
Miss 182
Mrs 125
Master 40
Dr 7
Rev 6
Major 2
Col 2
Mlle 2
Ms 1
the Countess 1
Capt 1
Jonkheer 1
Lady 1
Sir 1
Don 1
Mme 1

Dr以下は件数が少ないのでMr, Miss,Mrs, Masterのいづれかに寄せるかブランクにする。

</pre>
def get_title(name):
if '.' in name:
return name.split(',')[1].split('.')[0].strip()
else:
return 'Unknown'

def cvt_title(title):
if title in ['Rev', 'the Countess', 'Johnkheer']:
return ''
elif title in ['Dr', 'Col', 'Major', 'Capt', 'Sir', 'Don']:
return 'Mr'
elif title in ['Mlle','Ms', 'Lady']:
return 'Miss'
elif title in ['Mme']:
return 'Mrs'
else:
return title
d_train = pd.read_csv('train.csv')
d_train['title'] = d_train['Name'].apply(get_title)
<pre>

この結果以下のようにまとまった。

Mr        531
Miss      186
Mrs       126
Master     40
            8

これを利用して再度分析する。
import numpy as nm
import pandas as pd
import seaborn as sns

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

d_train['title'] = d_train['Name'].apply(get_title).apply(cvt_title)
d_test['title'] = d_test['Name'].apply(get_title).apply(cvt_title)
d_train = d_train.drop(['PassengerId','Name','Ticket','Cabin'], axis=1)
d_test = d_test.drop(['Name','Ticket','Cabin'], axis=1)
d_train["Embarked"] = d_train["Embarked"].fillna("S")
d_test["Fare"] = d_test["Fare"].fillna(35.6271884892086)
d_train["Age"] = d_train["Age"].fillna(29.69911764705882)
d_test["Age"] = d_test["Age"].fillna(30.272590361445783)
from sklearn.preprocessing import LabelEncoder
LE=LabelEncoder()
labels = ['Embarked','Sex', 'title']
for label in labels:
 d_train[label]=LE.fit_transform(d_train[label])
 d_test[label]=LE.fit_transform(d_test[label])
y_train = d_train["Survived"].values
x_train = d_train[["Pclass", "Sex", "Age", "Fare", "Parch", "Embarked", "SibSp", "title"]].values
x_test = d_test[["Pclass", "Sex", "Age", "Fare", "Parch", "Embarked", "SibSp", "title"]].values
from sklearn.tree import DecisionTreeClassifier dtree = DecisionTreeClassifier(maxdepth=8) dtree.fit(x_train,y_train) predictions = dtree.predict(x_test) kaggle_submission = pd.DataFrame({ "PassengerId": d_test["PassengerId"], "Survived": predictions }) kaggle_submission.to_csv("kaggle_submission_dt03.csv", index=False) 

結果、少し前進。

メタ情報

inarticle



メタ情報

inarticle



-Python
-,

執筆者:


comment

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

関連記事

no image

SIGNATE お弁当の需要予測-3

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

no image

automated the boring – day4

本日からOS操作。面倒くさいことを自動化するのであればOSコマンドは避けては通れない。 pythonではすでにosパッケージが用意されているので、これを利用すればコードとしてはそれほどはややこしくない …

no image

連続データのビジュアル

Kaggle TitanicのFareを使っていくつかビジュアル 金額別ヒストグラム-1 titanic_df[‘Fare’].plot(kind=’hist’, figsize=(15,3),bin …

no image

pythonからoffice365 smtpを利用してメールを送信

Office365の設定はこちらにある。 PythonにおけるSMTPの利用はこちらにある。 下記はサンプルコード import smtplib from email.mime.text import …

no image

jupyterで補完機能をつかう

まずはnbextentionsをインストール conda install -y -c conda-forge jupyter_contrib_nbextensions 次にnbextentionsタブ …

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

side bar top



アーカイブ

カテゴリー