科学の箱

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

配列の属性を確認

numpyでは生成した配列の中身を確認するための属性が用意されている。 主な属性は以下の通り 次元数を確認:ndarray.ndim 各次元の大きさを確認:ndarray.shape 全部の要素数:n …

no image

tensorflowをpipでインストールするときのオプション

tensorflow環境を構築するときにはpipを利用すると簡単である。pipの簡単な使い方としてはinstallオプションを指定すればよい。 pip install tensoflow しかしこのオ …

no image

kaggle Titanic Tutorial – 9

さて今回は少し趣向を変えて別のアルゴリズムを試してみる。 アルゴリズムの試し方はこちらを参考にした。 https://www.kaggle.com/omarelgabry/a-journey-thro …

no image

RoboBrowserで提供しているメソッドget_linksにおけるパラメータの指定方法

get_linksは便利だが文字列を指定する際に少々手間取った。 結論から言うと文字列で指定する方法とre.compileオブジェクトを指定する方法の2つがある。 まず一つ目は単純な文字列。exact …

no image

Python + Slack Bot – 3

さてリアルタイムでとりあえずうまくいったので、もう少し違うサンプルコードを試してみる。 参考にしたのはこちら。 https://www.fullstackpython.com/blog/build-f …

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

side bar top



アーカイブ

カテゴリー