Using Alternative Distance Metrics like Mahalanobis with DBSCAN

Viewed 3416

I want to use Mahalanobis distance in combination with DBSCAN.

For NearestNeighbors you can pass metric='mahalanobis' and metric_params={'V': np.cov(X)} for using Mahalanobis distance.

DBSCAN(eps=0.15, min_samples=8, metric='...', algorithm='brute', leaf_size=30, n_jobs=-1)

But how to do it with DBSCAN?

2 Answers

The answers above didn't work for me at the beginning of 2021. Today, you don't pass a distance object, instead you pass a dictionary with the mahalanobis covariance parameter.

The example above would look like this:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.cluster import DBSCAN

X, y = make_classification()

sklearn.cluster.DBSCAN(eps=0.15, min_samples=8, metric='mahalanobis', metric_params={'V':np.cov(X)}, algorithm='brute', leaf_size=30, n_jobs=-1)
Related