MNISTデータセットの可視化

MNISTデータセットをReNom TDAで可視化します。

このチュートリアルでは、ReNom TdAを用いてMNISTデータセットを可視化します。以下の2点を学習することができます。

  • ReNom TDAを用いたトポロジーの作り方。

  • トポロジーのグラフとMNISTのラベルの関係性を理解する。

必要なモジュール

In [1]:
import numpy as np

from sklearn.datasets import fetch_mldata

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

データセット

次にMNISTデータセットを読み込みます。読み込みには、scikit-learnのfetch_mldata関数を使用します。

MNISTデータセットは70000枚の数字画像からなります。次にデータ255で割ることで、画像を0-1の間にスケーリングします。

In [2]:
# Datapath must point to the directory containing the mldata folder.
data_path = "../dataset"
mnist = fetch_mldata('MNIST original', data_home=data_path)
In [3]:
# Reduce data because 70000 data is too large to calculate mapping.
data = mnist.data[::10]
target = mnist.target[::10]

# Rescale the image data to 0 ~ 1.
data = data.astype(np.float32)
data /= data.max()

インスタンス作成

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

In [4]:
topology = Topology()

データのロード

次にデータをインスタンスにロードします。

In [5]:
topology.load_data(data)

ポイントクラウド作成

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

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

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

このチュートリアルではMetricをNoneに、lensをPCAに設定します。これは、通常のPCAを用いた2次元への次元削減を意味します。

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

位相空間へのマッピング

次に、トポロジーを作成します。

ポイントクラウドを位相空間にマッピングするにはmap関数を使います。

このときに、3つのパラメータを設定します。

resolutionとは、ポイントクラウドの分割の数を表していて、ノードの数に関係します。

overlapとは、データの繋がりやすさを表します。

epsとmin_samplesはデータをクラスタリングする時に使います。

In [20]:
topology.map(resolution=50, overlap=1, eps=0.4, min_samples=2)
created 3226 nodes.
created 25097 edges.

可視化

次に、トポロジーのグラフの色を作成します。

このチュートリアルでは、MNISTデータセットのラベルを用いて色付けします。

color_methodは’mean’か’mode’を、color_typeは’rgb’か’gray’を指定します。

In [21]:
topology.color(target, color_method="mode", color_type="rgb", normalize=True)

可視化

最後にトポロジーを表示して終了となります。

同じラベルを持つデータが近くに存在しクラスタを形成していることがわかります。

In [22]:
topology.show(fig_size=(15, 15), node_size=1, edge_width=0.1, mode="spring", strength=0.05)
../../../_images/notebooks_tda_mnist-dataset-mapping_notebook_17_0.png