A few posts ago I wrote about the mapper construction by Carlsson-Memoli-Singh and want to follow up on that a little.
I wrote a straightforward implementation of the construction in Python. It can be found here
Below you find an example how to use it.
Below you find an example how to use it.
Example Usage
from tdamapper.clusterfunctions import VietorisRipsClustering from tdamapper import mapper from tdamapper.referenceMap import create_functional_cover, coordinate_projection import json # Example data set with open("./example/dataset.json") as f: data = json.load(f); data = [ tuple(p) for p in data ] # Gather the mapper input VR = VietorisRipsClustering(epsilon = 0.6) zAxis = coordinate_projection(axis=2, domain=data) funcCover = create_functional_cover(endpoints=range(-12,12), overlap=0.5) # Run the alogrithm result = mapper(VR, zAxis, funcCover)
Below you see a visualization of the mapper result. The graph is colored by the values of zAxis
, the projection on the z-axis. The size of the nodes reflects the size of the associated clusters.
The take away should be that there are actually two separate branches growing out of a bigger cluster.
You shouldn't focus too much on the fact that the two branches cross each other. Although it reflects the reality of the situation pretty well, it is rather a bi-product of the fact that the data set lives in so few dimensions.
Mapper result. |
And indeed (what a terrible example it would have been if that was not the case) looking at a 3d plot of the original dataset we see that this reflects the shape pretty well.
Original data set. |
No comments :
Post a Comment