ポイントクラウドの可視化

ポイントクラウドの可視化

このチュートルアルでは、次元削減後のポイントクラウドを可視化します
ReNom TDAでは次元削減後のデータをポイントクラウドと呼びます。
  • ポイントクラウドの可視化方法

Requirements

In [1]:
import numpy as np

from sklearn.datasets import load_iris

from renom_tda.topology import Topology
from renom_tda.lens import PCA, TSNE, MDS, Isomap

データセット

最初にirisデータセットをダウンロードします.今回はsckit-learnの load_iris 関数を使用します。

irisデータセットは4つの変数を持つ150行のデータから構成されています。

In [2]:
iris = load_iris()

data = iris.data
target = iris.target

setosa = ["setosa"] * 50
versicolor = ["versicolor"] * 50
versinica = ["versinica"] * 50
species = np.array(setosa + versicolor + versinica).reshape(-1, 1)

text_data_columns = ["species"]
number_data_columns = ["sepal length", "sepal width", "petal length", "petal width"]

インスタンス作成

次にトポロジーのインスタンスを作成します。

In [3]:
topology = Topology()

データのロード

次に作成したインスタンスにデータをロードします。
load_data関数を使ってデータを入力します。
In [4]:
topology.load_data(data, number_data_columns=number_data_columns, text_data=species, text_data_columns=text_data_columns)

ポイントクラウドの作成

次に、ポイントクラウドと呼ばれる低次元空間に投影したデータを作成します。

データを低次元空間に射影する際に2つのパラメータを設定します。

metricは、データ同士の距離をどのように測るかの指標となります。lensとは、ポイントクラウドに投影する軸になります。

このチュートリアルではMetricをNoneにし、様々なlensを使います。

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

ポイントクラウドの色付け

次にポイントクラウドを色付けします。

In [6]:
topology.color_point_cloud(target, normalize=True)

ポイントクラウドの表示

In [7]:
topology.show_point_cloud(fig_size=(10, 10), node_size=10)
../../../_images/notebooks_tda_how-to-show-point-cloud_notebook_14_0.png

他のLensを使う。

In [8]:
metric = None
lens = [TSNE(components=[0, 1])]
topology.fit_transform(metric=metric, lens=lens)
topology.color_point_cloud(target, normalize=True)
topology.show_point_cloud(fig_size=(10, 10), node_size=10)
projected by TSNE.
../../../_images/notebooks_tda_how-to-show-point-cloud_notebook_16_1.png
In [9]:
metric = None
lens = [MDS(components=[0, 1])]
topology.fit_transform(metric=metric, lens=lens)
topology.color_point_cloud(target, normalize=True)
topology.show_point_cloud(fig_size=(10, 10), node_size=10)
projected by MDS.
../../../_images/notebooks_tda_how-to-show-point-cloud_notebook_17_1.png
In [10]:
metric = None
lens = [Isomap(components=[0, 1])]
topology.fit_transform(metric=metric, lens=lens)
topology.color_point_cloud(target, normalize=True)
topology.show_point_cloud(fig_size=(10, 10), node_size=10)
projected by Isomap.
../../../_images/notebooks_tda_how-to-show-point-cloud_notebook_18_1.png

ポイントクラウドの検索

In [11]:
metric = None
lens = [PCA(components=[0, 1])]
topology.fit_transform(metric=metric, lens=lens)
topology.color_point_cloud(target, normalize=True)
projected by PCA.
In [12]:
search_dicts = [{
    "data_type": "number",
    "operator": "=",
    "column": "target",
    "value": 1
}, {
    "data_type": "number",
    "operator": ">",
    "column": "sepal length",
    "value": 6.0
}]
In [13]:
node_index = topology.search_point_cloud(search_dicts=search_dicts, target=target, search_type="column")
topology.show_point_cloud(fig_size=(10, 10), node_size=10)
../../../_images/notebooks_tda_how-to-show-point-cloud_notebook_22_0.png