kaggleチュートリアルtitanicに挑戦

kaggleは機械学習競技プログラミングみたいなやつです。これのチュートリアルtitanicをやります。機械学習によるデータ解析を実際に体験することが目的です。部屋の等級、性別、兄弟夫婦の人数、親子の人数、年齢層に対してカーネルSVMを使うことで精度82%まで行きます。

 

問題について公式の説明のリンクです。

Titanic: Machine Learning from Disaster | Kaggle

 

以下のリンクを参考にしました。英語ですが、かなりわかりやすいです。

EDA To Prediction(DieTanic) | Kaggle

 

描画のライブラリmatplotlibの解説はこれがわかりやすかったです。

bicycle1885.hatenablog.com

 

データを扱うためのライブラリpandasはこれがわかりやすかったです。

qiita.com

 

 

1:データを分析する

2:データを加工する

3:モデル選んで、学習して、精度確認

 

この3ステップでやります。

 

作成したプログラムは全てgithubに上げてあります。

github.com

 

       1:データを分析する

データを読み込みます。nullがあるデータを確認します。性別、年齢、共に乗った人、に順に注目してデータを可視化して分析しました。最後にtrain2.csvにデータを保存しました。analyze.pyです。

f:id:wada0421514:20180408105558p:plain

性別と生存率のグラフです。女性は生き残る確率が高く、男性は低いことがわかります。

f:id:wada0421514:20180408105731p:plain

部屋の等級と生存率のグラフです。上のクラスであればあるほど、生き残る確率が高いことがわかります。

f:id:wada0421514:20180408105840p:plain

まばらな感じですが、子供やお年寄りは生き残る確率が高く、中間層は低いことがわかります。

f:id:wada0421514:20180408110053p:plain

兄弟夫婦の人数は1人が生存率のピークです。0人でも生存率は下がります。また、多ければ多いほど、下がるようです。

f:id:wada0421514:20180408110420p:plain

親や子供の人数は1,2,3人だと生存率が高いです。0人だと下がります。4人以上で、かなり下がります。 

 

        2:データを加工する

年齢データ(Age)が連続値であるため、学習できないので 、年齢層で0から4の値を持つAge_bandに変換しました。性別データを0,1の数値データに変換しました。予測に必要のないデータを削除して、保存しました。convert.pyです。

f:id:wada0421514:20180408113153p:plain

 年齢層と生存率のグラフです。16歳以下の生存率が一番高いです。

 

 

       3:モデル選んで、学習して、精度確認

加工したデータを読み込みます。学習用にデータを変換します。カーネルSVMで学習して、精度確認して、終了です。精度は以下のようになりました。82%です。コードは1.pyです。

 

Accuracy(rbf SVM): 0.8208955223880597

 

 

以上、kaggleチュートリアルtitanicでした。kaggle、pandas、scikitlearn凄いです。

 

アドバイス、改善点、質問があればお願いします。