2017年8月29日 更新

KaggleチュートリアルTitanicで上位3%以内に入るには。(0.82297)

まだ機械学習の勉強を初めて4ヶ月ですが、色々やってみた結果、約7000人のうち200位ぐらいの0.82297という記録を出せたので、色々振り返りながら書いていきます。

30,368 view お気に入り 2

目次

1.Kaggleとは

2.Titanicチュートリアル

3.生存予測

4.データ分析

5.まとめ

6.感想

7.用いたコード

参考文献

1. Kaggleとは

 初心者にとってはデータ分析の練習をするサイトです。実際は様々な問題を解くのを競い合って自分の腕を試すサイトです。データセットがもらえ、さらに他の人の解説(カーネル)を見ることができるので非常に学べるサイトだと思います。 https://www.kaggle.com

2. Titanicチュートリアル

 Kaggleのコンペティションは普通は開催期間が決まっていますが、チュートリアルは常時開催されています。その中でももっとも初心者向けじゃないかと思われるものがこのタイタニック問題です。ここでは891人分のデータを用いて他の418人の生存予測を行います。

3.生存予測

 ここからは実際にコードを交えて生存予測をして行いたいと思います。おそらく無駄に助長なコードがあるとは思いますが、ご了承ください。 はじめに必要なライブラリをimportします。

import pandas as pd 
import numpy as np
from sklearn.ensemble import RandomForestClassifier
.py

とりあえずはじめにtrainデータを見てみます。私は、jupyterをエディターとして使っています。初めてKaggleをやったときはまずこのデータを見ることすらできませんでした。ですがやり方は簡単でした。Kaggleからtrain.csvとtest.csvをダウンロードしてきて、それをjupyterのフォルダ?がいっぱい並んでいる所にドロップして、次のコードを打つだけでした。この方法以外だとtrain.csvにアクセスするのがとても面倒ではじめはできませんでした。

train= pd.read_csv("train.csv")
test= pd.read_csv("test.csv")
train.head(3)
.py
 (4269)

今回はデータの上から3つ目までを見てみます。さてデータを見てみると明らかにNameとTicketがめんどくさくてこのままでは学習させるのが難しそうだなと思います。 次に、trainの情報を見てみます。

train.info()
.py

<class ‘pandas.core.frame.DataFrame’>

RangeIndex: 891 entries, 0 to 890

Data columns (total 12 columns):

PassengerId 891 non-null int64

Survived 891 non-null int64

Pclass 891 non-null int64

Name 891 non-null object

Sex 891 non-null object

Age 714 non-null float64

SibSp 891 non-null int64

Parch 891 non-null int64

Ticket 891 non-null object

Fare 891 non-null float64

Cabin 204 non-null object

Embarked 889 non-null object

dtypes: float64(2), int64(5), object(5)

memory usage: 83.6+ KB

これから何がわかるでしょうか? わかることは「891のデータがあること。Age、CabinとEmbarkedにnullがあること。データの型が色々あること。」などでしょうか。 次にやることは、sexのmaleを0に、femaleを1に置き換える。また、EmbarkedのSを0、Cを1、Qを2に置き換えます。これはobjectだと今後学習させるときに問題があるからやります。 Embarkedは搭乗した場所で、SはSouthampton、CはCherbourg、QはQueenstownです。wikipediaに地図があるので見てみると面白いかもしれません。

train= pd.read_csv("train.csv").replace("male",0).replace("female",1).replace("S",0).replace("C",1).replace("Q",2)
test= pd.read_csv("test.csv").replace("male",0).replace("female",1).replace("S",0).replace("C",1).replace("Q",2)
.py

次にやりたいことは欠損値を埋めることです。Cabinは無視して、AgeとEmbarkedの欠損値を埋めます。そのコードは下のようになります。今回はそれぞれの平均値meanで埋めました。他にも中央値で埋める方法などもありましたが何度か試した所、結局平均値がいいという結果に私は至りました。

train["Age"].fillna(train.Age.mean(), inplace=True) 
train["Embarked"].fillna(train.Embarked.mean(), inplace=True)
.py
84 件

関連する記事 こんな記事も人気です♪

KaggleチュートリアルTitanicで上位1%に入った話。(0.87081)

KaggleチュートリアルTitanicで上位1%に入った話。(0.87081)

前回書いた「KaggleチュートリアルTitanicで上位3%以内に入るには。(0.82297)」 から久々にやり直した結果上位1%の0.87081を出せたのでどのようにしたのかを書いていきます。
Takumi Ihara | 6,734 view
pythonによるtensorflow〜deepdreamによる画像変換〜

pythonによるtensorflow〜deepdreamによる画像変換〜

今回は前回のtensorflowの記事に引き続き、deepdreamによる画像変換についてご紹介します。
三好 裕之 | 2,134 view
Python × TensorFlow ② ~TensorFlow を扱う上で必要な知識「定数・変数」~

Python × TensorFlow ② ~TensorFlow を扱う上で必要な知識「定数・変数」~

TensorFlow を扱う上で必要な以下3つの知識のうち「定数と変数」について解説していきたいと思います.
井上 大輝 | 536 view

この記事のキーワード

この記事のキュレーター

Takumi Ihara Takumi Ihara