Getting clustering metadata

This example will go over how to extract metadata which a clustering algorithm may have generated.

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(0, 2 * np.pi, 100)
data = np.c_[np.cos(theta), np.sin(theta)]
plt.scatter(data[:, 0], data[:, 1])
plt.show()
cluster meta

Projecting our data

projection = data[:, 0]
plt.scatter(data[:, 0], data[:, 1], label="data")
plt.scatter(projection, np.zeros_like(projection), label="projection")
plt.show()
cluster meta

Covering our data

import zen_mapper as zm

cover_scheme = zm.Width_Balanced_Cover(n_elements=3, percent_overlap=0.4)
cover = cover_scheme(projection)

Defining a clusterer

from sklearn.cluster import AffinityPropagation

sk = AffinityPropagation()
clusterer = zm.sk_learn(sk)

Computing the mapper graph

result = zm.mapper(
    data=data,
    projection=projection,
    cover_scheme=cover_scheme,
    clusterer=clusterer,
    dim=1,
)

Plotting using cluster_metadata

import networkx as nx

from zen_mapper.adapters import to_networkx

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(data[:, 0], data[:, 1], label="data")
pos = dict()
for cover_element, cluster_meta in zip(result.cover, result.cluster_metadata):
    for node, center in zip(cover_element, cluster_meta.cluster_centers_):
        pos[node] = center


G = to_networkx(result.nerve)
nx.draw(G, pos=pos, ax=ax2)
plt.tight_layout()
plt.show()
cluster meta

Total running time of the script: (0 minutes 0.242 seconds)

Gallery generated by Sphinx-Gallery