MENU

Titanic – Machine Learning from Disaster_1

タイタニック ~災害からの機械学習~

タイタニック号の沈没は歴史上最も悪名高い船の難破事故の一つです。

1912年4月15日は、当時世界で最も豪華で最大の旅客クルーズ船であるタイタニック号が大西洋に沈没したことを記録しています。2,200人の乗客を乗せて処女航海を行っていた英国所有の船は、氷山にぶつかった後、カナダのニューファウンランドの南約643kmの海域に沈没しました。

Kaggleという機械学習のコンペサイトには、この時タイタニックに乗船していた方の様々な情報を含んだリスト等が掲載されており、データセットが入っています。

これは伝説的な Titanic ML コンテストです。ML コンテストに飛び込んで Kaggle プラットフォームの仕組みを理解するための、最初の、そして最高のチャレンジです。

コンテストはシンプルです。機械学習を使用して、タイタニック号の沈没でどの乗客が生き残ったかを予測するモデルを作成します。

課題

タイタニック号の沈没は歴史上最も悪名高い船の難破事故の一つです。

1912 年 4 月 15 日、処女航海中、「沈まない」と思われていた タイタニック号が氷山に衝突して沈没しました。残念ながら、乗船者全員を乗せられるだけの救命ボートがなかったため、乗客と乗組員 2,224 人のうち 1,502 人が死亡しました。

生き残るにはある程度の運の要素もあったが、一部の人々のグループは他の人々よりも生き残る可能性が高いようです。

このチャレンジでは、乗客データ(名前、年齢、性別、社会経済階級など)を使用して、「どのような人が生き残る可能性が高いか」という質問に答える予測モデルを構築していただきます。

このコンテストではどのようなデータを使用する…のでしょうか?

このコンテストでは、名前、年齢、性別、社会経済階級などの乗客情報を含む 2 つの類似したデータセットにアクセスできます。1 つのデータセットのタイトルは でtrain.csv、もう 1 つのデータセットのタイトルは ですtest.csv

Train.csvこの報告書には、搭乗していた乗客の一部(正確には891人)の詳細が含まれ、重要な点として、彼らが生き残ったかどうか、つまり「グラウンドトゥルース」が明らかになる。

データtest.csvセットには同様の情報が含まれていますが、各乗客の「真実」は公開されていません。これらの結果を予測するのはあなたの仕事です。

データで見つかったパターンを使用してtrain.csv、( で見つかった)船に乗っていた他の 418 人の乗客がtest.csv生き残ったかどうかを予測します。

「データ」タブをチェックして、データセットをさらに詳しく調べてください。競争力のあるモデルが作成されたと感じたら、それを Kaggle に送信して、他の Kaggler と比較して、自分のモデルがリーダーボードでどの位置にいるかを確認してください。

Kaggleに予測を提出する方法(ついつい忘れがち。)

提出してリーダーボードに載る準備ができたら、次の手順に従ってください。

  1. 「予測を送信」ボタンをクリックします
2.提出ファイル形式の CSV ファイルをアップロードします。1 日に 10 件の提出が可能です。

提出時のファイル形式:

PassengerId正確に 418 個のエントリとヘッダー行を含む csv ファイルを送信する必要があります。余分な列 (および以外) または行がある場合、送信時にエラーが表示されますSurvived

ファイルには正確に 2 つの列が必要です。

  • PassengerId(任意の順序で並べ替え)
  • Survived(バイナリ予測が含まれます: 生存の場合は 1、死亡の場合は 0)
  • 以下のようになるはず、です。

PassengerId , Survived

892,0
893,1
894,0

・・・

確か、学習用という性質のため、2か月でリストから消える…はずです。

では開始!!

 まず、私の環境ですが、

・Windows11 Home

・Google Drive

・Google Colab上のPython Version3

で行っています。

Gooleアカウント取得や、GoogleDriveへのリンク、Kaggleデータのダウンロード及びGoogleDriveへのアップロードは省略します。

Python起動&データ読み込み!!

 Google Colaborateで、ノートブックの新規作成により、コード入力可能な画面に遷移します。ライブラリ、モジュールのインポート、パスマウント等のためのコードを入力します。

 https://colab.research.google.com/drive/1KSHh_MVomc9jcKVIuzM33HvWdECrVh9X#scrollTo=VteyBqF9_phI&line=1&uniqifier=1

!pip install lime
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
import lightgbm as lgb
from sklearn.metrics import accuracy_score
from lime.lime_tabular import LimeTabularExplainer
from google.colab import drive
import warnings
drive.mount(‘/content/drive’)
warnings.simplefilter(‘ignore’)

コードの解説です。

1. !pip install lime

  • 解説: !pip は、Google Colab などの環境でシステムコマンドを実行するための方法です。この場合、pip install limelime というライブラリをインストールしています。LIME(Local Interpretable Model-agnostic Explanations)は、機械学習モデルの予測を説明するためのツールです。

2. import pandas as pd

  • 解説: pandaspd としてインポートしています。pandas はデータ操作に強力なライブラリで、データフレーム(表形式のデータ構造)を扱うために広く使われています。

3. import numpy as np

  • 解説: numpynp としてインポートしています。numpy は数値計算用のライブラリで、多次元配列(特に numpy の配列オブジェクト)を効率的に操作できます。

4. import seaborn as sns

  • 解説: seabornsns としてインポートしています。seaborn はデータ可視化ライブラリで、pandas データフレームなどを簡単に視覚化することができます。

5. import matplotlib.pyplot as plt

  • 解説: matplotlib.pyplotplt としてインポートしています。matplotlib は基本的なグラフを作成するための強力なライブラリで、plt は特にグラフを表示するために使用されます。

6. from sklearn.model_selection import train_test_split

  • 解説: scikit-learntrain_test_split 関数をインポートしています。この関数はデータセットをトレーニングセットとテストセットに分割するために使用されます。

7. import lightgbm as lgb

  • 解説: LightGBM ライブラリを lgb としてインポートしています。LightGBM は、勾配ブースティングを使用した高速で効率的な機械学習モデルを構築するためのライブラリです。

8. from sklearn.metrics import accuracy_score

  • 解説: scikit-learn ライブラリの accuracy_score 関数をインポートしています。これは、モデルの予測精度(正解率)を評価するために使います。

9. from lime.lime_tabular import LimeTabularExplainer

  • 解説: LIME のタブレットデータ用説明モジュール LimeTabularExplainer をインポートしています。このクラスは、機械学習モデルの個別の予測結果を説明するために使用されます。

10. from google.colab import drive

  • 解説: google.colabdrive モジュールをインポートしています。これにより、Google Colab から Google Drive にアクセスできるようになります。

11. drive.mount('/content/drive')

  • 解説: Google Drive を指定されたパス (/content/drive) にマウントしています。これにより、Google Drive 上のファイルにアクセスしたり保存したりできます。

12. import warnings

  • 解説: Python 標準ライブラリの warnings モジュールをインポートしています。このモジュールを使用して、警告メッセージを処理したり、無視したりすることができます。

13. warnings.simplefilter('ignore')

  • 解説: この行はすべての警告を無視する設定です。simplefilter('ignore') によって、不要な警告メッセージが出ないようにしています。特に機械学習モデルの訓練中やデータ処理中の些細な警告を無視したい場合に便利です。

続けて、trainCSVを読み込むコード、上3行を表示するコードを入力します。

あわせて読みたい
train = pd.read_csv(‘/content/drive/MyDrive/Colab Notebooks/kaggle/Titanic/train.csv’)
train.head(3)

コードの解説はこちら。

1. train = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/kaggle/Titanic/train.csv')

  • 解説: pandasread_csv 関数を使って、CSVファイル(この場合は train.csv)を読み込んでいます。このファイルはTitanicデータセットで、ファイルのパスは Google Drive にある Colab Notebooks/kaggle/Titanic/ に指定されています。このデータは train という変数に格納されます。
    • train.csv は Kaggle の Titanic コンペティションのデータセットで、生存者予測問題に使われるものです。
    • pd.read_csv() 関数は、CSVファイルを読み込んで pandas のデータフレーム形式に変換します。データフレームは、表形式のデータ構造で、行と列があるため、非常に扱いやすいデータ形式です。

2. train.head(3)

  • 解説: head() メソッドを使って、データフレームの先頭3行を表示しています。head() の引数に数字を指定すると、その行数分だけデータを表示します。この場合、最初の3行だけが表示されます。
    • train データフレームに格納された Titanic データセットの中身を確認するために使われるメソッドです。特に、データの先頭部分だけを確認したいときに有効です。

このコードでは、Google Drive に保存されている Titanic データセットの最初の3行を確認し、どのようなデータが含まれているかを把握することができます。

結果以下のように表示されます。

PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th… female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S

続けて、testCSVを読み込むコード、上3行を表示するコードを入力します。

あわせて読みたい
test = pd.read_csv(‘/content/drive/MyDrive/Colab Notebooks/kaggle/Titanic/test.csv’)
test.head(3)

コードの解説はこちら。

1. test = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/kaggle/Titanic/test.csv')

  • 解説: pandasread_csv 関数を使って、test.csv というCSVファイルを読み込んでいます。このファイルのパスは Google Drive の指定されたフォルダにあります。このファイルには Titanic データセットのテストデータが格納されており、それが test という変数に保存されます。
    • test.csv はKaggleのTitanicコンペティションにおけるテストデータです。通常、テストデータには予測すべきターゲット(この場合は「生存者」)の情報が含まれておらず、モデルの性能評価に使われます。
    • pd.read_csv() 関数を使うことで、CSVファイルを pandas のデータフレーム形式に変換し、分析や処理が可能な状態にします。

2. test.head(3)

  • 解説: test データフレームの先頭3行を表示するために head(3) メソッドを使用しています。head() は、引数で指定した数の行を表示するメソッドで、この場合は最初の3行を表示します。
    • これにより、test データフレームにどのようなデータが含まれているか、特にデータの構造や変数(列)の確認を行うことができます。

このコードでは、Google Drive に保存されている Titanic データセットのテストデータを読み込み、その最初の3行を表示してデータの中身を確認しています。

結果以下のように表示されます。

PassengerId Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 892 3 Kelly, Mr. James male 34.5 0 0 330911 7.8292 NaN Q
1 893 3 Wilkes, Mrs. James (Ellen Needs) female 47.0 1 0 363272 7.0000 NaN S
2 894 2 Myles, Mr. Thomas Francis male 62.0 0 0 240276 9.6875 NaN Q

データの説明は以下の通り。

カラム名 説明
PassengerId 乗客の一意の識別番号
Survived 乗客が生存したかどうか(1: 生存, 0: 死亡)
Pclass 乗客の社会経済的地位を示すクラス(1st, 2nd, 3rd)
Name 乗客の名前
Sex 乗客の性別
Age 乗客の年齢
SibSp タイタニック号に同乗している兄弟または配偶者の数
Parch タイタニック号に同乗している親または子供の数
Ticket チケット番号
Fare 乗船料金
Cabin 部屋番号
Embarked 乗船した港(C: Cherbourg, Q: Queenstown, S: Southampton)