kaggle始めてみた【タイタニック生存予測】

シェアする

まつよう
こんにちは。

機械学習モデルの構築練習が出来るサービス、kaggleを始めてみました。kernelを用いて初めてsubmitするまでに行ったことを紹介します。


やったこと

・kaggleアカウント作成

・Titanicのコンペティション参加

・kernelを用いた学習モデル作成

・予測して提出

Kaggle: Your Machine Learning and Data Science Community
Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.

kaggleでは、サイト上でプログラムを実行することができます。データの読み込み、機械学習モデルの作成、予測、出力、提出まで、すべてブラウザ上で無料で行うことができました。

タイタニックコンペティション

常時参加可能な初心者向けコンペティションです。

乗客の性別や年齢といった与えられたデータから、タイタニック号で生存出来たかどうかの予測を行います。

kernel作成

コンペティションのサイトからNotebooksを選択→New Notebookを選択で、kernelを新規作成することができます。

Select type で Notebook を選択すれば、Jupyter Notebook のような要領でプログラムの作成、実行を行えます。

データの読み込み

このコンペティションでは、以下の3つのcsvファイルが用意されています。

test.csv : テストデータ。このデータの予測結果を提出する。

train.csv : 訓練データ。学習モデル構築に用いる。

gender_submission.csv : 解答例。

kernelから、pandasを用いてデータの読み込みを行っていきます。

データは、../input/titanic/ 上に格納されていました。

pandasを用いて配列に格納していきます。

訓練データの読み込み

結果

テストデータの読み込み

結果

訓練データには、生存情報(Survived)が含まれていますが、テストデータには含まれていません。

この、テストデータに含まれる乗客の生存情報を、他の情報から予測していきます。

解答例の読み込み

結果

このようなフォーマットのcsvファイルを作成し、提出することがコンペティションのゴールです。

この解答例では、男性を全て死亡、女性を全て生存と予測しています。

ちなみにこの予測方法で提出してみると、スコア(精度?)は0.76555になりました。

データの可視化

モデル構築のために有効そうな特徴量の選定を行っていきます。

コンペティションで与えられたデータには、一部値が空欄で欠損しているものがありました。

まずは欠損しているデータの確認を行います。

trainデータの結果

Age(年齢), Cabin(部屋番号), Embarked(乗船した港) の情報に欠損があることがわかりました。

今回は、データに欠損がなく扱いやすそうな Sex(性別), Pclass(階級) の二つを特徴量として扱います。

seabornをインポートし、性別と階級別での生存者数の比較を行いました。

女性の方が生存率が高く、また階級が高い人の方が生存率が高いことがわかりました。

データ整形

性別と階級以外の、学習に用いない不要なデータを取り除きます。

また、与えられたデータでは、性別が male, female, で表現されているため、これを数値に変換する必要があります。

これにより、配列が生存情報と特徴量だけのシンプルな状態になりました。

ランダムフォレストによる予測→提出

訓練データの配列を解答と特徴量の二つに分割し、これを元に機械学習モデルの構築を行います。

今回は、sklearnのRandomForestClassifierを用いました。

学習させた機械学習モデルを用い、テストデータの予測を行います。

予測結果から提出用のcsvファイルを生成しました。

kernelで生成したcsvファイルは、Commitを行った後、

Versionsから任意のversionを選択
→Open versionを押下
→ページ遷移後、Output Files から『Submit to Competition』を選択

で、結果の提出を行うことができます。

提出した結果、自分がオリジナルで作成したモデルのスコアは0.75598でした。

性別で分けただけの解答例よりも悪い結果に……

スコアの結果は、ランキング形式で他のユーザーと比較することが出来ます。

おわりに

とりあえず一通りの方法を理解しました。

今後は特徴量を増やしたりして、せめてサンプルよりは予測精度を向上させたいです。

また、pandasやseabornといったライブラリの扱いもまだまだ不慣れなので、これを機会にゴリゴリ習得していきたいなあと思いました。

参考にしたサイト

Kaggle事始め - Qiita
はじめにデータ解析の情強な方なら、Kaggle はご存じだと思います。データ解析のSkillを競うCompetitionサイトで、与えられたテーマ(Dataset)に対して、世界中のデータ解析有識…
Kaggleを始める人に役に立つ記事 - Qiita
#なぜKaggleをやったのかたまに仕事でPythonに接する機会がありましたが、Pythonは様々なLibraryがあることに気づき、興味を持つことになりました。そして、たまたまKaggle…
タイタニック号乗客の生存予測モデルを立ててみる - Qiita
はじめにこの記事はGizumoエンジニア Advent Calendar 2015の24日目の記事です。株式会社Gizumoというまだ出来て半年という若い会社でWebアプリエンジニアやってる@s…
Titanic?????????? koji
Explore and run machine learning code with Kaggle Notebooks | Using data from Titanic - Machine Learning from Disaster

つづき

kaggle始めてみた【タイタニック生存予測②】
kaggle始めてみた【タイタニック生存予測②】
kaggleによるタイタニック生存者予測第二弾。今回は積み上げヒストグラム生成、欠損値処理、k-fold法による正答率計算を行いました。
スポンサーリンク

シェアする

スポンサーリンク