データセット「California Housing」について説明。2万640件のカリフォルニアの住宅価格の「表形式データ(部屋数や築年数などの8項目)」+「ラベル(住宅価格)」が無料でダウンロードでき、回帰問題などのディープラーニングや統計学/データサイエンスに利用できる。scikit-learnにおける利用コードも紹介。
California Housingデータセット(houses.zip)(カリフォルニアの住宅価格データ)は、「1990年の米国国勢調査から得られたカリフォルニア州の住宅価格」の表形式データセット(=構造化データセット)である(図1)。
California Housingは、主に回帰(数値予測、つまり「住宅価格の予測」)を目的としたディープラーニング/機械学習/統計学などで活用できる。
California Housingで注意してほしいのは、データセットの各行が「個別の家の値」ではなく「国勢調査のブロックグループごとにまとめた値(中央値や総数など)」になっていることだ。ブロックグループとは、米国国勢調査局が1つの標本データとして扱う「最小の地理的単位」のことである。1つのブロックグループに含まれる個人の人数は、通常は600〜3000人で、California Housing(以下、「データセット」という表記は省略する)では平均して1425.5人となっている。
California Housingの元データ(houses.zip内に含まれるcadata.txt)は具体的には、
住宅価格(中央値)、所得(中央値)、築年数(中央値)、総部屋数、総寝室数、人口、総世帯数、緯度、経度
という順の9属性で構成されている。ただし総部屋数や総寝室数、総世帯数は、ブロックグループ全体の合計値であり、それに含まれる個々の家(厳密には世帯)を代表する平均値ではない(※「世帯:household」とは、住居と生計を同じくする人の集まりを指す)。そこでこれら3属性を、
「総部屋数」よりも「1世帯当たりの部屋数」(=総部屋数÷総世帯数)
「総寝室数」よりも「1世帯当たりの寝室数」(=総寝室数÷総世帯数)
「総世帯数」よりも「1世帯当たりの世帯人数」(=人口÷総世帯数)
という形で数値計算して置き換えると、より機械学習などで使いやすくなるだろう。この計算をPythonなどで行っても大した手間ではないが、後述するライブラリscikit-learnでは既に上記の数値変換により属性を置き変えた状態でデータセットを提供してくれている。その結果、
所得(中央値)、築年数(中央値)、部屋数(平均値)、寝室数(平均値)、人口、世帯人数(平均値)、緯度、経度
という8属性が説明変数(descriptive variable、特徴量、入力データ)として、
住宅価格(中央値)
の1属性が目的変数(target variable、ラベル=正解を示す教師データ)として提供されている。各属性(列項目)の意味を以下にまとめておく(「※」を付けたものは置き換えた属性)。
なお、別荘地や空家が多いなどの理由で世帯数が少ないブロックグループでは、当然ながら平均部屋数や平均寝室数が非常に大きな値になっているので注意してほしい。
California Housingデータセット全体は、以下のようになっている。欠損値はない。
このデータセットは、基本的に自由に使用できる(※ライセンスは指定されていない。データの取得元を明記する場合は、以下を参考にしてほしい)。
実際にCalifornia Housingを使うには、ライブラリscikit-learnが提供する機能を利用することをお勧めする。ムダな作業を省いて、効率的に使えるためだ。※なお、TensorFlow /Keras/PyTorchにはCalifornia Housingは用意されていなかった。
以下に、scikit-learnで「どのようなコードを書くとCalifornia Housingが使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。
# !pip install scikit-learn # ライブラリ「scikit-learn」をインストール
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing(as_frame=True)
sklearn.datasets.fetch_california_housing()関数を呼び出せばよい。戻り値として辞書オブジェクトを返す。その配下のdataにデータが、targetにラベルが、feature_namesに特徴名が、リスト1の例のように関数の引数にas_frame=Trueを含めた場合はframeに全9列のpandasデータフレーム(※target列は最後の列)が格納されている。
ちなみに、scikit-learnのバージョン1.0からはBoston Housingデータセットが倫理的な問題から非推奨となり、その代替として本稿で説明したCalifornia Housingデータセットを利用することが推奨されている。Boston Housingは、バージョン1.2で削除される予定である(2022年1月26日時点のバージョンは1.0.2であるため、かなり先の話だと思われる)。そのため今後は、California Housingが広く使われるようになっていく可能性が高い(ため、本稿を執筆した)。
Copyright© Digital Advantage Corp. All Rights Reserved.