2017年8月29日 更新

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

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

697 view お気に入り 0

目次

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 件

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

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

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

今回は前回のtensorflowの記事に引き続き、deepdreamによる画像変換についてご紹介します。
三好 裕之 | 1,483 view
【機械学習勉強会】パターン認識と機械学習(PRML)第1章のまとめ Part.3 ~決定理論~

【機械学習勉強会】パターン認識と機械学習(PRML)第1章のまとめ Part.3 ~決定理論~

機械学習理論の名著である『パターン認識と機械学習』(Pattern Recognition and Machine Learning, PRML)の内容をまとめます. 第1章の Part.3 では,「決定理論」について説明します.
最上 伸一 | 1,039 view
【機械学習勉強会】パターン認識と機械学習(PRML)第1章のまとめ Part.2 ~モデル選択・次元の呪い~

【機械学習勉強会】パターン認識と機械学習(PRML)第1章のまとめ Part.2 ~モデル選択・次元の呪い~

機械学習理論の名著である『パターン認識と機械学習』(Pattern Recognition and Machine Learning, PRML)の内容をまとめます. 第1章の Part.2 では,「モデル選択」「次元の呪い」について説明します.
最上 伸一 | 825 view
【機械学習勉強会】パターン認識と機械学習(PRML)第1章のまとめ Part.1

【機械学習勉強会】パターン認識と機械学習(PRML)第1章のまとめ Part.1

機械学習理論の名著である『パターン認識と機械学習』(Pattern Recognition and Machine Learning, PRML)の内容をまとめます.
最上 伸一 | 1,657 view
LSTMとは〜概要と応用について〜

LSTMとは〜概要と応用について〜

音声信号処理や文章・対話の生成に用いられているLSTM(Long Short Term Memory)についてまとめました。
三好 裕之 | 1,997 view

この記事のキーワード

この記事のキュレーター

Ihara Takumi Ihara Takumi