Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Alternative Distance Metrics like Mahalanobis with DBSCAN

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?

like image 334
ScientiaEtVeritas Avatar asked Jul 11 '17 10:07

ScientiaEtVeritas


1 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)
like image 86
Wilmer E. Henao Avatar answered Nov 15 '22 04:11

Wilmer E. Henao