Skip to main content

tda-mapper

test deploy docs codecov

The Mapper algorithm is a well-known technique in the field of topological data analysis that allows data to be represented as a graph. Mapper is used in various fields such as machine learning, data mining, and social sciences, due to its ability to preserve topological features of the underlying space, providing a visual representation that facilitates exploration and interpretation. For an in-depth coverage of Mapper you can read the original paper.

This Python package provides a simple and efficient implementation of the Mapper algorithm.

Usage

Here you can find a worked out example that shows how to use this package. In the example we perform some analysis on the the well known dataset of hand written digits.

import numpy as np

from sklearn.datasets import load_digits
from sklearn.cluster import AgglomerativeClustering
from sklearn.decomposition import PCA

from tdamapper.core import MapperAlgorithm
from tdamapper.cover import CubicalCover
from tdamapper.clustering import FailSafeClustering
from tdamapper.plot import MapperPlot

# We load a labelled dataset
X, y = load_digits(return_X_y=True)
# We compute the lens values
lens = PCA(2).fit_transform(X)

mapper_algo = MapperAlgorithm(
    cover=CubicalCover(
        n_intervals=10,
        overlap_frac=0.65),
    # We prevent clustering failures
    clustering=FailSafeClustering(            
        clustering=AgglomerativeClustering(10),
        verbose=False))
mapper_graph = mapper_algo.fit_transform(X, lens)

mapper_plot = MapperPlot(X, mapper_graph,
    # We color according to digit values
    colors=y,
    # Jet colormap, used for classes
    cmap='jet',
    # We aggregate on graph nodes according to mean
    agg=np.nanmean,
    dim=2,
    iterations=400,
    seed=42)
fig_mean = mapper_plot.plot(title='digit (mean)', width=600, height=600)
fig_mean.show(config={'scrollZoom': True})

Mapper graph of digits, colored according to mean

It's also possible to obtain a new plot colored according to different values, while keeping the same computed geometry. For example, if we want to visualize how much dispersion we have on each cluster, we could plot colors according to the standard deviation.

# We reuse the graph plot with the same positions
fig_std = mapper_plot.with_colors(
    colors=y,
    # Viridis colormap, used for ranges
    cmap='viridis',
    # We aggregate on graph nodes according to std
    agg=np.nanstd,
).plot(title='digit (std)', width=600, height=600)
fig_std.show(config={'scrollZoom': True})

Mapper graph of digits, colored according to std

The mapper graph of the digits dataset shows a few interesting patterns. For example, we can make the following observations:

  • Clusters that share the same color are all connected together, and located in the same area of the graph. This behavior is present in those digits which are easy to tell apart from the others, for example digits 0 and 4.

  • Some clusters are not well separated and tend to overlap one on the other. This mixed behavior is present in those digits which can be easily confused one with the other, for example digits 5 and 6.

  • Clusters located across the "boundary" of two different digits show a transition either due to a change in distribution or due to distorsions in the hand written text, for example digits 8 and 2.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tda-mapper-0.3.0.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tda_mapper-0.3.0-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file tda-mapper-0.3.0.tar.gz.

File metadata

  • Download URL: tda-mapper-0.3.0.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for tda-mapper-0.3.0.tar.gz
Algorithm Hash digest
SHA256 039b062d5a980c6fb5283e0e9b36f7aa2756738f733c9ef3233e206a2862bd25
MD5 7d4d7ccc555efbde80c32db97d4ef74f
BLAKE2b-256 0039d8f419cde62d0a4f80750ac740b846abca65226a447be25a9ce338b6c63e

See more details on using hashes here.

File details

Details for the file tda_mapper-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: tda_mapper-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for tda_mapper-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 448704105dacf1d92034714e4cdc7a07c3949de4ff89f003e131295959cf4027
MD5 a6c883b21d8ee4a4fab04abfb930fe3a
BLAKE2b-256 1520c3bafcd24c063a6b840c69fc7b9e3aa7f3bc634fea8e0cdea25b42f5da55

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page