Skip to main content

FaissDBSCANClustering

Model
DashAI.back.models.faiss.FaissDBSCANClustering

FAISS-accelerated DBSCAN clustering model for the Models module.

Replaces sklearn DBSCAN's O(n²) epsilon-neighbourhood search with FAISS IndexFlatL2.range_search, which uses BLAS-optimised distance computation. The cluster-labelling step (core-point detection, BFS expansion, noise assignment) is identical to the original algorithm and is implemented in pure Python/NumPy.

Noise samples receive label -1, the same convention as sklearn DBSCAN and sklearn HDBSCAN. The algorithm does not require specifying the number of clusters in advance.

Key hyperparameters: eps (neighbourhood radius), min_samples (core-point threshold). Only the Euclidean (L2) metric is supported because FAISS IndexFlatL2 computes squared L2 distances.

References​

  • [1] Ester, M., Kriegel, H.-P., Sander, J., & Xu, X. (1996). "A density-based algorithm for discovering clusters in large spatial databases with noise."
  • [2] Johnson, J., Douze, M., & Jégou, H. (2019). "Billion-scale similarity search with GPUs."
  • [3] https://github.com/facebookresearch/faiss

Parameters​

eps : number, default=0.5
Maximum Euclidean distance between two samples to be considered neighbours.
min_samples : integer, default=5
Minimum samples in a neighbourhood for a point to be a core point (including the point itself).

Methods​

get_cluster_labels(self, x: 'DashAIDataset | None' = None) -> numpy.ndarray

Defined on FaissDBSCANClustering

Return cluster labels from the fitted model.

Parameters

x : DashAIDataset, optional
If provided, must have the same number of rows as the training set.

Returns

numpy.ndarray
Cluster label per sample. Noise points are labelled -1.

get_fit_attributes(self) -> dict

Defined on FaissDBSCANClustering

Return FAISS-DBSCAN post-fit attributes for the converter report.

train(self, x_train: 'DashAIDataset') -> 'FaissDBSCANClustering'

Defined on FaissDBSCANClustering

Fit FAISS-DBSCAN: build index, run range search, label clusters.

Parameters

x_train : DashAIDataset
Input feature matrix.

Returns

FaissDBSCANClustering
The fitted model instance.

calculate_metrics(self, split: DashAI.back.core.enums.metrics.SplitEnum = <SplitEnum.VALIDATION: 'validation'>, level: DashAI.back.core.enums.metrics.LevelEnum = <LevelEnum.LAST: 'last'>, log_index: int = None, x_data: 'DashAIDataset' = None, y_data: 'DashAIDataset' = None, fold_index: int = None, inner_fold_index: int = None)

Defined on BaseModel

Calculate metrics for a data split and save them to the database.

Parameters

split : SplitEnum
The data split to evaluate (TRAIN, VALIDATION, or TEST). Defaults to SplitEnum.VALIDATION.
level : LevelEnum
The metric granularity level (LAST, TRIAL, STEP, or BATCH). Defaults to LevelEnum.LAST.
log_index : int, optional
Explicit step index for the metric entry. If None, the next step index is computed automatically. Defaults to None.
x_data : DashAIDataset, optional
Input features. If None, the dataset stored in the model for the given split is used. Defaults to None.
y_data : DashAIDataset, optional
Target labels. If None, the labels stored in the model for the given split are used. Defaults to None.

Returns

Dict[str, float] or None
What was written, so a caller that also wants the numbers does not have to score the same split twice. None when nothing was written: no run to write against, or nothing to score.

compute_metrics(self, split: DashAI.back.core.enums.metrics.SplitEnum = <SplitEnum.VALIDATION: 'validation'>, x_data: 'DashAIDataset' = None, y_data: 'DashAIDataset' = None) -> Optional[Dict[str, float]]

Defined on BaseModel

Score a data split with this model's metrics, without persisting.

Parameters

split : SplitEnum
The data split to evaluate. Defaults to SplitEnum.VALIDATION.
x_data : DashAIDataset, optional
Input features. Defaults to the split stored on the model.
y_data : DashAIDataset, optional
Target labels. Defaults to the split stored on the model.

Returns

Dict[str, float] or None
Metric name to score. A metric that scored a non-finite value is absent from the mapping rather than present with a NaN, so the mapping is empty when every metric returned one. None when there is nothing to score at all: no metrics configured, or no data for this split. Callers that need a particular metric must therefore check that it is there.

get_credential(self, name: str)

Defined on ConfigObject

Resolve a registered credential component by name.

Parameters

name : str
Credential component class name (e.g. "HuggingFaceCredential").

Returns

BaseCredential
An instance of the requested credential component.

get_metadata(cls) -> Dict[str, Any]

Defined on BaseModel

Get metadata values for the current model.

Returns

Dict[str, Any]
Dictionary containing UI metadata such as the model icon used in the DashAI frontend.

get_registry(cls) -> Dict[str, Type[ForwardRef('ClusteringModel')]]

Defined on ClusteringModel

Return concrete clustering algorithm classes keyed by class name.

get_schema(cls) -> dict

Defined on ConfigObject

Generates the component related Json Schema.

Returns

dict
Dictionary representing the Json Schema of the component.

load(filename: str) -> Any

Defined on FaissBaseModel

Restore a fitted model from disk.

Parameters

filename : str
Path to a previously saved model file.

Returns

Any
The deserialised model instance.

predict_prepared(self, features: Any) -> Any

Defined on BaseModel

Predict from data that is already in this model's feature space.

Parameters

features : pandas.DataFrame or numpy.ndarray
Feature matrix as returned by prepare_dataset(..., is_fit=False). No further preparation is applied to it.

Returns

Any
The same kind of output as predict: predicted values for regressors, class probabilities for DashAI classifiers.

predict_proba_prepared(self, features: Any) -> Any

Defined on BaseModel

Return class probabilities for data already in the feature space.

Parameters

features : pandas.DataFrame or numpy.ndarray
Feature matrix as returned by prepare_dataset(..., is_fit=False).

Returns

numpy.ndarray
Array of shape (n_samples, n_classes) with class probabilities.

prepare_dataset(self, dataset: 'DashAIDataset', is_fit: bool = False) -> 'DashAIDataset'

Defined on BaseModel

Hook for model specific preprocessing of input features.

Parameters

dataset : DashAIDataset
The input dataset to preprocess.
is_fit : bool
Whether the call is part of a fitting phase. Defaults to False.

Returns

DashAIDataset
The preprocessed dataset ready to be fed into the model.

prepare_output(self, dataset: 'DashAIDataset', is_fit: bool = False) -> 'DashAIDataset'

Defined on BaseModel

Hook for model-specific preprocessing of output targets.

Parameters

dataset : DashAIDataset
The output dataset (target labels) to preprocess.
is_fit : bool
Whether the call is part of a fitting phase. Defaults to False.

Returns

DashAIDataset
The preprocessed output dataset.

save(self, filename: str) -> None

Defined on FaissBaseModel

Save the fitted model to disk using joblib.

Parameters

filename : str
Destination path for the serialised model.

validate_and_transform(self, raw_data: dict) -> dict

Defined on ConfigObject

It takes the data given by the user to initialize the model and returns it with all the objects that the model needs to work.

Parameters

raw_data : dict
A dictionary with the data provided by the user to initialize the model.

Returns

dict
A validated dictionary with the necessary objects.

Compatible with​