Source code for acore.tda_analysis

try:
    import kmapper as km
except ImportError as e:
    raise ImportError(
        "Error importing kmapper module. Make sure kmapper is installed. "
        "Install it with: pip install 'acore[all]'"
        f"\n\nError: {e}"
    ) from e
import numpy as np
from sklearn import cluster, ensemble


[docs] def run_mapper( data, lenses=["l2norm"], n_cubes=15, overlap=0.5, n_clusters=3, linkage="complete", affinity="correlation", ): """ :param data: :param lenses: :param n_cubes: :param overlap: :param n_clusters: :param linkage: :param affinity: :return: """ X = data._get_numeric_data() labels = {i: data.index[i] for i in range(len(data.index))} model = ensemble.IsolationForest(random_state=1729) model.fit(X) lens1 = model.decision_function(X).reshape((X.shape[0], 1)) # Create another 1-D lens with L2-norm mapper = km.KeplerMapper(verbose=0) lens2 = mapper.fit_transform(X, projection=lenses[0]) # Combine both lenses to get a 2-D [Isolation Forest, L^2-Norm] lens lens = np.c_[lens1, lens2] # Define the simplicial complex simplicial_complex = mapper.map( lens, X, clusterer=cluster.AgglomerativeClustering( n_clusters=n_clusters, linkage=linkage, affinity=affinity ), ) return simplicial_complex, {"labels": labels}