ボストン住宅価格のマッピング

ボストン住宅価格をマッピングするチュートリアル

このチュートリアルでは、ReNom TDAを用いてボストン住宅価格データセットを可視化します。以下の点を学習することができます。

  • トポロジーの分析方法

Requirement

In [1]:
import numpy as np

from sklearn.datasets import load_boston

from renom_tda.topology import Topology
from renom_tda.lens import PCA

データのインポート

はじめに、分析に使うデータセットをロードします。scikit-learnにある load_boston モジュールを使います。

ボストン住宅価格データセットは、13変数の506データからなるデータセットです。

13個の変数と目的変数は次のような項目で構成されます。

CRIM:人口1人当たりの犯罪発生数

ZN:25,000平方フィート以上の住居区画の占める割合

INDUS:小売業以外の商業が占める面積の割合

CHAS:チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外)

NOX:NOxの濃度

RM:住居の平均部屋数

AGE:1940年より前に建てられた物件の割合

DIS:5つのボストン市の雇用施設からの距離

RAD:環状高速道路へのアクセスしやすさ

TAX:$10,000ドルあたりの不動産税率の総計

PTRATIO:町毎の児童と教師の比率

B:町毎の黒人(Bk)の比率を次の式で表したもの。1000(Bk – 0.63)^2

LSTAT:給与の低い職業に従事する人口の割合

target:住宅価格の中央値

In [2]:
bos = load_boston()
target = bos.target
data = bos.data

インスタンス作成

In [3]:
topology = Topology()

データのロード

In [4]:
columns = ["CRIM", "ZN", "INDUS", "CHAS", "NOX", "RM", "AGE", "DIS", "RAD", "TAX", "PTRATIO", "B", "LSTAT"]
topology.load_data(data, number_data_columns=columns, standardize=True)

ポイントクラウド作成

In [5]:
metric = None
lens = [PCA(components=[0,1])]
topology.fit_transform(metric=metric, lens=lens)
projected by PCA.

位相空間へマッピング

In [6]:
topology.map(resolution=25, overlap=0.5, eps=0.3, min_samples=1)
created 275 nodes.
created 711 edges.

トポロジを色付け

In [13]:
print("colored by target values.")
topology.color(target, color_method="mean", color_type="rgb")
topology.show(fig_size=(10,10), node_size=10, edge_width=0.5)
colored by target values.
../../../_images/notebooks_tda-case-study_boston-house-price-mapping_notebook_14_1.png
In [12]:
print("colored by RM values.")
topology.color(topology.number_data[:, 5], color_method="mean", color_type="rgb")
topology.show(fig_size=(10,10), node_size=10, edge_width=0.5)
colored by RM values.
../../../_images/notebooks_tda-case-study_boston-house-price-mapping_notebook_15_1.png
上の2枚の画像は似た色のパターンをしています。
これは、RM変数はtarget変数と相関があることを示します。

検索

In [10]:
search_dicts = [{
    "data_type": "number",
    "operator": ">",
    "column": "target",
    "value": 24
}]

topology.color(target, color_method="mean", color_type="rgb")
node_index = topology.search_from_values(search_dicts=search_dicts, target=target, search_type="column")
topology.show(fig_size=(10,10), node_size=10, edge_width=0.5)
../../../_images/notebooks_tda-case-study_boston-house-price-mapping_notebook_18_0.png