Digits dataset
[5]:
import numpy as np
from sklearn.datasets import load_digits
from sklearn.cluster import AgglomerativeClustering
from sklearn.decomposition import PCA
from tdamapper.learn import MapperAlgorithm
from tdamapper.cover import CubicalCover
from tdamapper.clustering import FailSafeClustering
from tdamapper.plot import MapperPlot
X, y = load_digits(return_X_y=True) # We load a labelled dataset
lens = PCA(2, random_state=42).fit_transform(X) # We compute the lens values
Build Mapper graph
[6]:
mapper_algo = MapperAlgorithm(
cover=CubicalCover(
n_intervals=10,
overlap_frac=0.65
),
clustering=AgglomerativeClustering(10),
verbose=False
)
mapper_graph = mapper_algo.fit_transform(X, lens)
Plot Mapper graph with mean
[7]:
mapper_plot = MapperPlot(
mapper_graph,
dim=2,
iterations=400,
seed=42
)
fig = mapper_plot.plot_plotly(
colors=y, # We color according to digit values
cmap='jet', # Jet colormap, used for classes
agg=np.nanmean, # We aggregate on graph nodes according to mean
title='digit (mean)',
width=600,
height=600
)
fig.show(
renderer='notebook_connected',
config={'scrollZoom': True}
)
Plot Mapper graph with standard deviation
[8]:
fig = mapper_plot.plot_plotly(
colors=y,
cmap='viridis', # Viridis colormap, used for ranges
agg=np.nanstd, # We aggregate on graph nodes according to std
title='digit (std)',
width=600,
height=600
)
fig.show(
renderer='notebook_connected',
config={'scrollZoom': True}
)