Titanic:タイタニック号乗客者の生存状況(年齢や性別などの13項目)の表形式データセット:AI・機械学習のデータセット辞典
データセット「Titanic」について説明。1309件の「タイタニック号乗客者の生存状況」の「表形式データ(年齢や性別などの13項目)」+「ラベル(生存状況)」が無料でダウンロードでき、分類問題などのディープラーニングや統計学/データサイエンスに利用できる。scikit-learn、TensorFlow、Kaggleにおける利用コードも紹介。
データセット解説
Titanic dataset(タイタニックデータセット。以下、Titanic)は、「1912年に北大西洋で氷山に衝突して沈没したタイタニック号への乗客者の生存状況」の表形式データセット(=構造化データセット)である(図1、複数の研究者が「Encyclopedia Titanica」上から抽出し、Frank E. Harrell, Jr.氏が取りまとめ、Thomas Cason氏が大幅に更新&改善して作成されたデータセットである)。
図1 Titanicデータセットの内容例
※データセットの配布元: 「ヴァンダービルト大学(生物統計学科)のデータセットアーカイブ」内にある「titanic3データセット(titanic3.csvファイル)」。
Titanicは、主に分類(つまり「生存状況の予測」)を目的としたディープラーニング/機械学習/統計学の研究や初心者向けチュートリアルで使われている(※ただし、ディープラーニングを行うにはデータ数が1309件と少なすぎる点に注意が必要だ)。特に、Kaggleの初心者チュートリアル「Titanic: Machine Learning from Disaster」のデータセットとして有名。
Titanicは、13属性(説明変数、入力データ)+1属性(目的変数、ラベル=正解を示す教師データ)の14属性で構成されている。各属性(列項目)の意味は以下のようになっている。なお、各ライブラリで、属性の順番が異なる場合や、名前や客室番号など機械学習には使えない属性は初めから省略されている場合があるので注意してほしい。また、ライブラリによっては「PassengerId:乗客者ID」という独自の属性を追加している場合がある。
- pclass: 旅客クラス(1=1等、2=2等、3=3等)。裕福さの目安となる
- name: 乗客の名前
- sex: 性別(male=男性、female=女性)
- age: 年齢。一部の乳児は小数値
- sibsp: タイタニック号に同乗している兄弟(Siblings)や配偶者(Spouses)の数
- parch: タイタニック号に同乗している親(Parents)や子供(Children)の数
- ticket: チケット番号
- fare: 旅客運賃
- cabin: 客室番号
- embarked: 出港地(C=Cherbourg:シェルブール、Q=Queenstown:クイーンズタウン、S=Southampton:サウサンプトン)
- boat: 救命ボート番号
- body: 遺体収容時の識別番号
- home.dest: 自宅または目的地
- survived:生存状況(0=死亡、1=生存)。通常はこの数値が目的変数として使われる
Titanicデータセット全体は、以下のようになっている。欠損値があることに注意してほしい(※そのため、前処理などを学ぶのに好都合ともいえる)。
- データ数は、合計1309個(つまり、1309行×13列の表形式データと、1309行×1列のラベル)
- 基本的に、訓練用とテスト用へのデータ分割は行われていない
なお、元データ(titanic3.csv)は、1309行×14列の表形式データとなっており、2列目が目的変数(ラベル)なので注意してほしい。
引用のための情報
このデータセットは、基本的に自由に使用できる(※ライセンスは指定されていないが、ヴァンダービルト大学(生物統計学科)のデータセットページには「このデータセットを使いたい人は誰でも利用できる」と明記されている。また、OpenMLのTitanicデータセットでは「Publicly available」に指定され、CC(Creative Commons)でいう「パブリック・ドメイン・マーク 1.0=パブリックドメインに属することを第三者によって指定するためのマーク」となっている。ただし、上記のデータセットページによると、“Data obtained from http://hbiostat.org/data courtesy of the Vanderbilt University Department of Biostatistics.”(=“データは、ヴァンダービルト大学、生物統計学部の厚意により、http://hbiostat.org/data から取得しました。”という注記を書くことが求められているので、厳密には「CC BY 4.0」相当と考えた方がよいだろう)。
データセットを引用する際に使える情報を以下にまとめておく。
- 作成者: Frank E. Harrell Jr., Thomas Cason
- タイトル: Titanic dataset
- 公開日: Dec 27, 2002
- URL: https://hbiostat.org/data/配下の、
- titanic.html
- titanic3.csv
- titanic3info.txt(※2024年9月25日追記: データセットの仕様が記載されていたが、リンク切れにより取得できなくなっているので本稿を参考にしてほしい)
利用方法
実際にTitanicを使うには、直接、CSVファイルを読み込んでもよいし、scikit-learnやTensorFlow Datasetsといった各ライブラリが提供する機能を利用してもよい。※なお、TensorFlow(tf.keras)/KerasとPyTorchにはTitanicは用意されていなかった。
以下に、それぞれのライブラリで「どのようなコードを書くとTitanicが使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。基本的に各ライブラリは、Titanicデータセットを自動的にダウンロードして使いやすい形にロードしてくれる機能を提供している。
pandasでCSVファイルの読み込み/Kaggle
import pandas as pd
pd_titanic = pd.read_csv('https://hbiostat.org/data/repo/titanic3.csv')
Pythonのデータ分析ライブラリ「pandas」のread_csv()関数を使って、Kaggleが提供するデータや上記のtitanic3.csvファイルをロードすればよい。
scikit-learn
# !pip install scikit-learn # ライブラリ「scikit-learn」をインストール
from sklearn.datasets import fetch_openml
titanic = fetch_openml(data_id=40945, as_frame=True)
sklearn.datasets.fetch_openml()関数(※EXPERIMENTAL、つまり実験段階のAPI)を呼び出せばよい。この関数は、OpenML.orgからデータセットをフェッチ(=取得)するためのもので、リスト2では「Titanic(ID:40945)」をフェッチしている。
TensorFlow Datasets
# !pip install tensorflow tensorflow-datasets # ライブラリ「TensorFlow」と「TensorFlow Datasets」をインストール
import tensorflow_datasets as tfds
(titanic_train, titanic_test) = tfds.load(name='titanic', split=['train[:80%]', 'train[80%:]'])
TensorFlow Datasetsで使用できるデータセットは、TensorFlow Datasetsにまとめられており、tensorflow_datasetsモジュール(=tfds)のtfds.load()関数から利用できる。リスト3では「titanicデータセット」をロードしている。
ここを更新しました(2024年9月25日)
「http://biostat.mc.vanderbilt.edu/wiki/Main/DataSets/」で始まるリンクが切れていたので、「http://hbiostat.org/data」で始まるリンクに書き直しました。このURLの変更による影響で、titanic3info.txtファイルが入手できなくなったことを追記しました。
Copyright© Digital Advantage Corp. All Rights Reserved.