3D Horse DataΒΆ

This example generates a Mapper built from a point-cloud sampled from a 3D model of a horse.

Visualization of the horse data

[1]:
import matplotlib.pyplot as plt
import numpy as np
import sklearn

import kmapper as km
from pathlib import Path

if Path("data/horse-reference.csv").exists():
    horse_path = "data/horse-reference.csv"
elif Path("horse-reference.csv").exists():
    horse_path = "horse-reference.csv"
else:
    raise FileNotFoundError

data = np.genfromtxt(horse_path, delimiter=",")

mapper = km.KeplerMapper(verbose=2)


lens = mapper.fit_transform(data)


graph = mapper.map(
    lens,
    data,
    clusterer=sklearn.cluster.DBSCAN(eps=0.1, min_samples=5),
    cover=km.Cover(30, 0.2),
)

if Path("output/").is_dir():
    prepend = "output/"
else:
    prepend = "./"

mapper.visualize(
    graph, path_html=prepend + "horse.html", custom_tooltips=np.arange(len(lens))
)


km.drawing.draw_matplotlib(graph)
plt.show()
KeplerMapper(verbose=2)
..Composing projection pipeline of length 1:
        Projections: sum
        Distance matrices: False
        Scalers: MinMaxScaler()
..Projecting on data shaped (8431, 3)

..Projecting data using: sum

..Scaling with: MinMaxScaler()

Mapping on data shaped (8431, 3) using lens shaped (8431, 1)

Minimal points in hypercube before clustering: 5
Creating 30 hypercubes.
   > Found 1 clusters in hypercube 0.
   > Found 2 clusters in hypercube 1.
   > Found 3 clusters in hypercube 2.
   > Found 3 clusters in hypercube 3.
   > Found 3 clusters in hypercube 4.
   > Found 3 clusters in hypercube 5.
   > Found 3 clusters in hypercube 6.
   > Found 1 clusters in hypercube 7.
   > Found 2 clusters in hypercube 8.
   > Found 2 clusters in hypercube 9.
   > Found 2 clusters in hypercube 10.
   > Found 3 clusters in hypercube 11.
   > Found 2 clusters in hypercube 12.
   > Found 2 clusters in hypercube 13.
   > Found 1 clusters in hypercube 14.
   > Found 1 clusters in hypercube 15.
   > Found 1 clusters in hypercube 16.
   > Found 1 clusters in hypercube 17.
   > Found 1 clusters in hypercube 18.
   > Found 1 clusters in hypercube 19.
   > Found 1 clusters in hypercube 20.
   > Found 1 clusters in hypercube 21.
   > Found 1 clusters in hypercube 22.
   > Found 1 clusters in hypercube 23.
   > Found 1 clusters in hypercube 24.
   > Found 1 clusters in hypercube 25.
   > Found 1 clusters in hypercube 26.
   > Found 1 clusters in hypercube 27.
   > Found 1 clusters in hypercube 28.
   > Found 1 clusters in hypercube 29.

Created 48 edges and 48 nodes in 0:00:00.099967.
Wrote visualization to: ./horse.html
no display found. Using non-interactive Agg backend