KATUBLO | エンジニアの日常BLOG
2018年12月24日

初心者がkaggleのtitanicをやってみた【正規化編】

やること

kaggleのチュートリアル「titanic」のデータの正規化

 

 

背景

インターン先の先輩などに勧められ、kaggleをやることに。目的は機械学習エンジニアのスキルを高めるため。

 

 

与えられるCSV形式でのデータ

 

1.test.csv (テストデータ)

2.train.csv (学習データ)

3.gender_submission

 

 

データを読み込む

 

 

データの欠損値を調べる

以下の一覧は学習データのカラム。数字は欠損値の個数を表す。

 

 

Age, Cabin, Embarkedのデータがかけていることがわかる。よってこの3つのデータを前処理する必要がある

 

Ageの欠損値をどうするか

 

 

平均年齢と年齢の中央値

 

 

年齢の欠損値は中央値で埋める. 分散が大きい場合は平均値を持ちいるが今回はそうでないので.

 

 

Cabinの欠損値をどうするか

Cabinはデータ全体の77%のデータが欠けているので今回はdrop(削除)する.

 

 

 

Embarkedの欠損値をどうするか

Embarkedはデータ全体の0.0022%のデータが欠けており, Embarkedのもっとも頻度が多い特徴を埋め合わせることをまず考える.

 

 

 

 

S(Southampton)がの割合がグラフから見て取れるのでSを埋め合わせる.

 

 

学習データの項目を変更する

 

sibspとparchは公式サイトにより, 以下のように定義されている.

sibsp: The dataset defines family relations in this way…
Sibling = brother, sister, stepbrother, stepsister
Spouse = husband, wife (mistresses and fiancés were ignored)

parch: The dataset defines family relations in this way…
Parent = mother, father
Child = daughter, son, stepdaughter, stepson
Some children travelled only with a nanny, therefore parch=0 for them.

 

ここで一人で乗船していたかどうかのカラムを追加する. sibspのレコード+parchのレコードが0であれば一人で乗船していたことになる. よって以下のようにカラムを追加.

 

 

ダミー変換をする

Pclass, Embarked, sexは文字であるため, ニューラルネットに変換できる形, すなわち数値に変換する必要がある. そのためにダミー変換を行う.

 

 heartland.geocities.jp 
ダミー変換
http://heartland.geocities.jp/ecodata222/ed/edj1-5-3-2.html

 

 

ドロップする

精度を高めるために, いくつかのデータをドロップすることで除外する. 除外するデータとして, PassengerId, Name,  Cabin, SibSp, Prch, TravelBuds, Ticketの6つを除外する.

 

 

実際のコード

一通り, ここまでのコードをまとめる.

 

 

 

 

 

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習を開始。現在は「ToC向け大規模サービスを運営するメガベンチャー」と「AIスタートアップ」でインターンで修行中。2020年4月からwebエンジニアとして社会人生活スタート。

Twitterアカウント

広告

スポンサー