データセット「Titanic」について説明。1309件の「タイタニック号乗客者の生存状況」の「表形式データ(年齢や性別などの13項目)」+「ラベル(生存状況)」が無料でダウンロードでき、分類問題などのディープラーニングや統計学/データサイエンスに利用できる。scikit-learn、TensorFlow、Kaggleにおける利用コードも紹介。
Titanic dataset(タイタニックデータセット。以下、Titanic)は、「1912年に北大西洋で氷山に衝突して沈没したタイタニック号への乗客者の生存状況」の表形式データセット(=構造化データセット)である(図1、複数の研究者が「Encyclopedia Titanica」上から抽出し、Frank E. Harrell, Jr.氏が取りまとめ、Thomas Cason氏が大幅に更新&改善して作成されたデータセットである)。
Titanicは、主に分類(つまり「生存状況の予測」)を目的としたディープラーニング/機械学習/統計学の研究や初心者向けチュートリアルで使われている(※ただし、ディープラーニングを行うにはデータ数が1309件と少なすぎる点に注意が必要だ)。特に、Kaggleの初心者チュートリアル「Titanic: Machine Learning from Disaster」のデータセットとして有名。
Titanicは、13属性(説明変数、入力データ)+1属性(目的変数、ラベル=正解を示す教師データ)の14属性で構成されている。各属性(列項目)の意味は以下のようになっている。なお、各ライブラリで、属性の順番が異なる場合や、名前や客室番号など機械学習には使えない属性は初めから省略されている場合があるので注意してほしい。また、ライブラリによっては「PassengerId:乗客者ID」という独自の属性を追加している場合がある。
Titanicデータセット全体は、以下のようになっている。欠損値があることに注意してほしい(※そのため、前処理などを学ぶのに好都合ともいえる)。
なお、元データ(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」相当と考えた方がよいだろう)。
データセットを引用する際に使える情報を以下にまとめておく。
実際にTitanicを使うには、直接、CSVファイルを読み込んでもよいし、scikit-learnやTensorFlow Datasetsといった各ライブラリが提供する機能を利用してもよい。※なお、TensorFlow(tf.keras)/KerasとPyTorchにはTitanicは用意されていなかった。
以下に、それぞれのライブラリで「どのようなコードを書くとTitanicが使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。基本的に各ライブラリは、Titanicデータセットを自動的にダウンロードして使いやすい形にロードしてくれる機能を提供している。
import pandas as pd
pd_titanic = pd.read_csv('https://hbiostat.org/data/repo/titanic3.csv')
Pythonのデータ分析ライブラリ「pandas」のread_csv()関数を使って、Kaggleが提供するデータや上記のtitanic3.csvファイルをロードすればよい。
# !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)」をフェッチしている。
# !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データセット」をロードしている。
「http://biostat.mc.vanderbilt.edu/wiki/Main/DataSets/」で始まるリンクが切れていたので、「http://hbiostat.org/data」で始まるリンクに書き直しました。このURLの変更による影響で、titanic3info.txtファイルが入手できなくなったことを追記しました。
Copyright© Digital Advantage Corp. All Rights Reserved.