科学の箱

科学・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における配列はnp.arrayを使って生成する。最も基本となる方法はnp.arrayに引数としてリストを渡してやる方法である。 まずは整数の配列を生成してみる。 pri …

no image

condaでjupyter notebookが使えないとき

condaで環境を作るとjupyter notebookはインストールされていない。 この場合には個別にjupyterをインストールすればよい。   conda install jupyte …

no image

pythonで配列に関係する型

pythonで配列に関連する型は3つある。 list array numpy.ndarray pandas.dataframe list 違っている複数のデータ型を要素として保持できる 多次元配列可能 …

no image

Numpyまとめ

環境及びインポート numpyのインポートおよび環境確認 配列生成 配列をリストから生成 配列の属性を確認 すべての要素が同じ値を持つ配列を生成 空の配列を生成 numpy.linspace()を使っ …

no image

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

一次関数と等差数列 一次関数をテストするときに必須になるのが等差数列。等差数列とは要素と要素の間の差が等しいもの。 例えば1, 2, 3, 4, 5, 6は等差が1の数列である。等差が2になると、1, …

2018年5月
月 火 水 木 金 土 日
« 4月   6月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー