CoreSGClusterer Workflow

CoreSGClusterer gives the same reuse behavior through an estimator-shaped API:

from core_sg import CoreSGClusterer

clusterer = CoreSGClusterer(k_max=30)

for k in [25, 20, 15, 10]:
    clusterer.fit(X, k=k)
    labels = clusterer.labels_
CoreSGClusterer lifecycle
User calls fit(X, k=25)
↓
Estimator creates core_sg_ and builds support at k_max=30
↓
Estimator exposes attributes for k=25
↓
User calls fit(X, k=20)
↓
Estimator reuses the existing core_sg_ object
↓
Estimator exposes updated attributes for k=20
The rebuild decision is based on whether core_sg_ exists, not on whether k equals k_max.

The first call builds core_sg_. Later calls reuse the same object and only extract a new hierarchy.

labels_ updates after each call and corresponds to the most recent k. The internal reusable object remains available through clusterer.core_sg_ or clusterer.get_fitted_core_sg() for advanced inspection.

fit_predict(...) is available:

labels = clusterer.fit_predict(X, k=10)

predict(...) is not implemented because unseen-sample assignment semantics are not part of the current Core-SG API.