Skip to content

fix(dbscan): GPU clustering metrics, and eps quantile in the estimator's metric - #227

Draft
Alexandr-Solovev wants to merge 3 commits into
IntelPython:mainfrom
Alexandr-Solovev:dev/asolovev_dbscan_metrics
Draft

Alexandr-Solovev wants to merge 3 commits into
IntelPython:mainfrom
Alexandr-Solovev:dev/asolovev_dbscan_metrics

Conversation

@Alexandr-Solovev

@Alexandr-Solovev Alexandr-Solovev commented Nov 7, 2026 •

Copy link
Copy Markdown

Description

Two DBSCAN changes, one commit each:

  • fix: clustering metrics on GPU. get_subset_metrics_of_estimator passed the dpnp ground-truth labels to np.unique, which refuses the implicit conversion, so every sklearnex GPU DBSCAN case failed after the fit. It now uses the converted y_compat, as the other metrics already do.
  • feat: eps quantile in the estimator's metric. distances_quantile always took euclidean distances, so eps had the wrong scale for manhattan, chebyshev, cosine and minkowski. It now uses metric (and p for minkowski) from the estimator parameters through pairwise_distances. Euclidean cases get the same value as before.

New configs/experiments/dbscan_metrics.json runs DBSCAN with the five metrics that scikit-learn-intelex computes in oneDAL (uxlfoundation/scikit-learn-intelex#3483). It covers blobs, cifar and covtype, against scikit-learn's brute and auto algorithms, sklearnex on CPU, and sklearnex on GPU with dpnp input. This config produced the CPU tables in uxlfoundation/oneDAL#4004.

🤖 Generated with Claude Code

Alexandr-Solovev and others added 2 commits November 6, 2026 13:29
… on GPU

The DBSCAN quality metrics passed the dpnp ground-truth labels to np.unique,
which refuses the implicit conversion, so every sklearnex GPU DBSCAN case
failed after the fit. Use the converted copy, as the other metrics do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Alexandr-Solovev <aleksandr.solovev@intel.com>
… a metrics experiment

distances_quantile always used euclidean distances, so eps had the wrong scale
for manhattan, chebyshev, cosine and minkowski. It now uses the metric (and p)
from the estimator parameters; euclidean cases get the same value as before.

configs/experiments/dbscan_metrics.json runs DBSCAN with the five metrics that
scikit-learn-intelex runs in oneDAL on blobs, cifar and covtype, against
scikit-learn's brute and auto algorithms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Alexandr-Solovev <aleksandr.solovev@intel.com>
The experiment had at most 54 columns apart from cifar; the new blobs
cover wide data with fewer rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Alexandr-Solovev <aleksandr.solovev@intel.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants