連載
» 2020年07月02日 05時00分 公開

AI・機械学習のデータセット辞典:Titanic:タイタニック号乗客者の生存状況(年齢や性別などの13項目)の表形式データセット

データセット「Titanic」について説明。1309件の「タイタニック号乗客者の生存状況」の「表形式データ(年齢や性別などの13項目)」+「ラベル(生存状況)」が無料でダウンロードでき、分類問題などのディープラーニングや統計学/データサイエンスに利用できる。scikit-learn、TensorFlow、Kaggleにおける利用コードも紹介。

[一色政彦,デジタルアドバンテージ]
「AI・機械学習のデータセット辞典」のインデックス

連載目次

データセット解説

 Titanic datasetタイタニックデータセット。以下、Titanic)は、「1912年に北大西洋で氷山に衝突して沈没したタイタニック号への乗客者の生存状況」の表形式データセット(=構造化データセット)である(図1、複数の研究者が「Encyclopedia Titanica」上から抽出し、Frank E. Harrell, Jr.氏が取りまとめ、Thomas Cason氏が大幅に更新&改善して作成されたデータセットである)。

図1 Titanicデータセットの内容例 図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=パブリックドメインに属することを第三者によって指定するためのマーク」となっている。ただし、上記のデータセットページによると、“http://biostat.mc.vanderbilt.edu/DataSets から取得したデータ”という注記を書くことが求められているので、厳密には「CC BY 4.0」相当と考えた方がよいだろう)。

 データセットを引用する際に使える情報を以下にまとめておく。

利用方法

 実際に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('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.csv')

リスト1 Pandasを使ってTitanicをロードする基本的なコード

 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)

リスト2 scikit-learnでTitanicを利用する基本的なコード

 sklearn.datasets.fetch_openml()関数(EXPERIMENTAL、つまり実験段階のAPI)を呼び出せばよい。この関数は、OpenML.orgからデータセットをフェッチ(=取得)するためのもので、リスト2では「Titanic(ID:40945)」をフェッチしている。

TensorFlow Datasets

# !pip install tensorflow-datasets  # ライブラリ「TensorFlow Datasets」をインストール

import tensorflow_datasets as tfds

(titanic_train, titanic_test) = tfds.load(name='titanic', split=['train[:80%]', 'train[80%:]'])

リスト3 TensorFlow DatasetsでTitanicを利用する基本的なコード

 TensorFlow Datasetsで使用できるデータセットは、TensorFlow Datasetsにまとめられており、tensorflow_datasetsモジュール(=tfds)のtfds.load()関数から利用できる。リスト3では「titanicデータセット」をロードしている。

「AI・機械学習のデータセット辞典」のインデックス

AI・機械学習のデータセット辞典

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。